๐Ÿ”’Algorithm

๋ฐฑ์ค€[node.js] > 9461๋ฒˆ ํŒŒ๋„๋ฐ˜ ์ˆ˜์—ด

devWarrior 2025. 1. 5. 12:07

 

๋ฌธ์ œ๋งํฌ

https://www.acmicpc.net/problem/9461

๋ฌธ์ œํ’€์ด

dp[i] = dp[i - 1] + dp[i - 5]; ๋ผ๋Š” ์ ํ™”์‹๋งŒ ๋„์ถœํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

( i ๋ฒˆ์งธ ์‚ผ๊ฐํ˜•์˜ ํ•œ๋ณ€์˜ ๊ธธ์ด =  i-1๋ฒˆ์งธ ๋ณ€์˜ ๊ธธ์ด + i-5๋ฒˆ์งธ ๋ณ€์˜ ๊ธธ์ด )

 

let fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");

const testCaseCount = Number(input.shift());

input = input.map((n) => Number(n));
let dp = [0, 1, 1, 1, 2, 2, 3, 4, 5, 7, 9]; // P(1) P(2) P(3) P(4) p(5) p(6) p(7) p(8) p(9) p(10)

let max = Math.max(...input);

for (let i = 11; i <= max; ++i) {
    dp[i] = dp[i - 1] + dp[i - 5];
}

input.forEach((N) => {
    console.log(dp[N]);
});