머쓱이는 구슬을 친구들에게 나누어주려고 합니다. 구슬은 모두 다르게 생겼습니다. 머쓱이가 갖고 있는 구슬의 개수 balls와 친구들에게 나누어 줄 구슬 개수 share이 매개변수로 주어질 때, balls개의 구슬 중 share개의 구슬을 고르는 가능한 모든 경우의 수를 return 하는 solution 함수를 완성해주세요.
import java.math.BigInteger;
class Solution {
public int solution(int balls, int share) {
BigInteger answer = BigInteger.valueOf(0);
answer = fac(BigInteger.valueOf(balls)).divide(fac(BigInteger.valueOf(balls - share)).multiply(fac(BigInteger.valueOf(share))));
return answer.intValue();
}
public BigInteger fac(BigInteger n) {
BigInteger result = BigInteger.valueOf(1);
for (BigInteger i = BigInteger.valueOf(1); i.compareTo(n) <= 0; i = i.add(BigInteger.ONE)) {
result = result.multiply(i);
}
return result;
}
}

이 공식이 있기에 쉽게 풀릴 줄 알았다...
근데 처음에는 int 로 풀다가 안돼서 질문들 찾아보니 30! 같은것처럼 수가 엄청
커지는거땜에 안된다해서 Long 으로 했더니 이번에도 실패 하는 문제가 있어서
결국 지피티 형한테 또 물어봐서 BingInteger 을 통해 해결하게 됐다.
요즘 범위가 커지는거 땜에 자꾸 틀리는데 잊지말고 잘 써먹어야 겠다.
'자바 알고리즘 문제' 카테고리의 다른 글
| 수열과 구간 쿼리2 (0) | 2024.03.12 |
|---|---|
| 삼각형의 완성조건 (2) (0) | 2024.03.11 |
| 문자열 여러 번 뒤집기 (0) | 2024.03.09 |
| 조건 문자열 (0) | 2024.03.09 |
| 두 수의 합 (0) | 2024.03.08 |