코린이의 소소한 공부노트

[프로그래머스/Lv.0] 구슬을 나누는 경우의 수 본문

코딩테스트 풀이/JAVA

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

무지맘 2022. 10. 25. 13:37

1. Input

1) 머쓱이가 갖고 있는 구슬의 개수를 담은 int 변수 balls

2) 친구들에게 나누어 줄 구슬의 개수를 담은 int 변수 share

 

2. Output

1) balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수

 

3. Constraint

1) 1 <= balls, share <= 30

2) 구슬을 고르는 순서는 고려하지 않음

3) share <= balls

 

4. Example

Input: balls=3, share=2 -> Output: 3

설명: a,b,c 3개 중 2개를 고르는 경우는 (a,b), (a,c), (b,c)3가지가 있다.

 

5. Code

1) 첫 코드(2022/10/25)

import java.math.*;
// main()
BigInteger answer = new BigInteger("1");
for(int i=balls ; i>balls-share ; i--)
    answer = answer.multiply(new BigInteger(String.valueOf(i)));
for(int i=share ; i>1 ; i--)
    answer = answer.divide(new BigInteger(String.valueOf(i)));
return answer.intValue();

- 조합을 이용한 식으로, factorial을 사용해도 무방