본문 바로가기
개발로그/알고리즘

프로그래머스 Lv.0 구슬을 나누는 경우의 수

by 쩜징 2023. 7. 28.

프로그래머스 Lv.0 구슬을 나누는 경우의 수


모두 다르게 생긴 구슬을

친구들에게 나누어주려고 한다.

구슬의 개수 balls와 

나누어 줄 구슬 개수 share이 주어진다.

balls개의 구슬 중 share개의 구슬을

고르는 가능한 모든 경우의 수를 reutrn하라.

 

구슬을 고르는 순서는 고려하지 않는다.

 

balls share result
3 2 3
5 3 10

** 풀이 방법

 

재귀 함수를 사용하려고 했으나

ㅈㅔ출할 때 자꾸 오류가 나서 방법을 바꿨다.

 

경우의 수 공식

 

* double형으로 d1, d2, d3 선언

d1 = 1 ~ balls까지 곱하기

d2 = 1 ~ res까지 곱하기

d3 = 1 ~ share까지 곱하기

공식에 적용 result→ d1 / (d2 * d3)

 

반올림한 result값을 int형으로 바꿔서 return

 

<> 전체 코드 </>

class Solution {
    public int solution(int balls, int share) {
        int answer = 0;
        int res = balls - share;
        double result = 0;
        double d1 = 1; double d2 = 1; double d3 = 1;
        for (int i=balls; i>0; i--) {
            d1 *= i;
        }   
        for (int i=res; i>0; i--) {
            d2 *= i;
        }
        for (int i=share; i>0; i--) {
            d3 *= i;
        }
        result = d1 / (d2*d3);
        answer = (int)Math.round(result);
        return answer;
    }
}

 

반응형

댓글