class Solution {
public int solution(int balls, int share) {
if (balls == share) return 1;
long result = 1;
for (int i = 0; i < share; i++) {
result *= (balls - i); // 분자 계산
result /= (i + 1); // 분모 계산
}
return (int)result;
}
}
조합 계산은 무작정 팩토리얼로만 접근하면 오버플로우가 생기기 쉬운 것 같다.
이 문제처럼 최적화된 계산 방식이 있다는 걸 다시 한 번 상기했다. 문제 자체는 간단했지만, 효율적인 계산을 연습할 수 있는 좋은 예제였다.
댓글
댓글 작성은 로그인 후에 가능합니다.