첫째 줄에 자연수 n(3<=n<=33)과 r(0<=r<=n)이 입력됩니다.
첫째 줄에 조합수를 출력합니다.
5 3
10
33 19
818809200
function solution(N, R) {
let answer;
function DFS(N, R) {
if (N === R || R === 0) {
return 1;
} else {
return DFS(N - 1, R - 1) + DFS(N - 1, R);
}
}
answer = DFS(N, R);
return answer;
}
console.log(solution(5, 3));
// 메모이제이션 적용
function solution2(N, R) {
let answer;
let dynamic_array = Array.from(Array(35), () => Array(35).fill(0));
function DFS(N, R) {
if (dynamic_array[N][R] > 0) {
return dynamic_array[N][R];
}
if (N === R || R === 0) {
return 1;
} else {
return (dynamic_array[N][R] = DFS(N - 1, R - 1) + DFS(N - 1, R));
}
}
answer = DFS(N, R);
return answer;
}
console.log(solution2(33, 19));