문제
내가 작성한 오답
: 나눈 결과를 int에 저장해서 손실이 발생한 것이 아닐까 싶었다.
class Solution {
public int solution(int balls, int share) {
int answer = 1;
for(int i=1; i<=share; i++){
answer=answer*(balls-(i-1))/i;
}
return answer;
}
}내가 작성한 정답
class Solution {
public int solution(int balls, int share) {
long answer = 1;
for(int i=1; i<=share; i++){
answer=answer*(balls-(i-1))/i;
}
return (int)answer;
}
}다른 사람들의 정답
public long solution(int balls, int share) {
share = Math.min(balls - share, share); // ① k 최적화 (nCk = nC(n-k))
if (share == 0) return 1; // ② 기본 케이스
long result = solution(balls - 1, share - 1); // ③ 재귀 호출
result *= balls;
result /= share;
return result;
}
Share article