
const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'Wiki\\input.txt';
const [_, ...P] = fs.readFileSync(path).toString().trim().split('\n');
const dp = new Array(101).fill(1);
dp[4] = 2;
dp[5] = 2;
for (let i = 6; i <= 100; i++) {
dp[i] = dp[i - 1] + dp[i - 5];
}
for (const n of P) {
console.log(dp[Number(n)]);
}
⏰ 소요한 시간 : 10분
예제에서 주어진 수열 1 1 1 2 2 3 4 5 7 9 12을 가만히 들여다 보면 아래와 같은 규칙을 찾을 수 있다.
P(N) = P(N-1) + P(N-5)
위 공식을 식으로 옮겨줬다. 문제 풀기전에는 무조건 dp다 라고 생각했는데, 다 풀고 제출하고나니 수학인 것 같기도 하다.
사실 dp가 수학임