μμ΄ μ‘°ν©μ 곡μμ¬μ©νμ§ μκ³ κ΅¬ννκΈ°
μ ν΄κ²°νλ κ³Όμ μμ, n
κ³Ό r
μ΄ μ»€μ§κ² λλ©΄ μμ²λ μκ°μ΄ 걸리λ κ²μ μμμλ€. μ‘°κΈ λ ν¨μ¨μ μΈ λ°©λ²μ κ³ μνκΈ° μν΄ λ©λͺ¨μ΄μ μ΄μ
κΈ°λ²μ νμ©ν΄ 보μλ€.
λ©λͺ¨μ΄μ μ΄μ μ ν΅ν΄ λ¬Έμ μ λμμλ λ²μ(nκ³Όr) λ₯Ό 컀λ²κ°λ₯ν 2μ°¨μ λ°°μ΄μ μμ±νμ¬, ν΄λΉ nCr μ κ°μ μ μ₯ν΄λμλ€. μ΄ λ°©λ²μ μ΄λ―Έ κ³μ°λ μ‘°ν©μ κ°μ λ°λ‘ λΆλ¬λ€κ° μ¬μ©μ΄ κ°λ₯νκΈ° λλ¬Έμ λΆνμν νμμ μ€μΌμμλ€.
μ΄λ₯Ό ν΅νμ¬ κ΅¬νν μ½λλ μλμ κ°λ€.
function solution(number, range) {
let answer = [];
let dy = Array.from(Array(34), () => Array(34).fill(0));
function DFS(n, r) {
if (dy[n][r] > 0) return dy[n][r];
// μμ κ°μ λ©λͺ¨μ΄μ μ΄μ
μ νμ©νμ¬ ν¨μ¨μ μΌλ‘ κ³μ°κ°λ₯νλ€.
// 0μΌλ‘ μ΄κΈ°ν μμΌλ dy μ 0μ΄ μλ κ°μ΄ λ€μ΄κ°μλ€λ©΄ κ·Έ κ°μ return νλ νμμ΄λ€.
if (r === 0 || n === r) {
return 1;
} else {
return (dy[n][r] = DFS(n - 1, r - 1) + DFS(n - 1, r));
}
}
answer = DFS(number, range);
return answer;
}