따라서 동적 계획법은 계산 횟수를 줄일 수 있다. 하위 문제의 수가 기하급수적으로 증가할 때 유용함
https://www.acmicpc.net/problem/11726
let memo = new Array(1001).fill(-1)
memo[1] = 1
memo[2] = 2
function dp(cur) {
if (cur == 1) {
return memo[1]
}
if (cur == 2) {
return memo[2]
}
if (memo[cur] !== -1) {
return memo[cur]
}
memo[cur] = (dp(cur - 1) + dp(cur - 2)) % 10007
return memo[cur]
}
dp(1000);
console.log(memo[count])
let dp = new Array(1001);
dp[0] = 1;
dp[1] = 2;
for (let i = 2; i < dp.length; ++i) {
dp[i] = (dp[i - 1] + dp[i - 2]) % 10007;
}
console.log(dp[count - 1]);
dp[i] = 2x(i+1) 크기의 직사각형을 타일로 채우는 경우의 수
dp[i] = dp[i-1]+dp[i-2]