재귀를 이용해 n
개의 숫자 중 m
개의 숫자를 뽑는 조합의 경우의 수를 구한다.
n | m | Output |
---|---|---|
5 | 3 | 10 |
33 | 19 | 818809200 |
5C3 = 4C2 + 4C3
인 식인데, 식의 뒷변은 n과 r이 같아지거나 r이 0이 되면 1이 된다. const solution = (n, r) => {
const memo = Array.from(Array(35), () => Array(35).fill(0));
const DFS = (n, r) => {
if (memo[n][r] > 0) return memo[n][r];
if (n === r || r === 0) {
memo[n][r] = 1;
return 1;
} else {
return (memo[n][r] = DFS(n - 1, r - 1) + DFS(n - 1, r));
}
};
return DFS(n, r);
};