[๋ฐฑ์ค 9095๋ฒ] 1, 2, 3 ๋ํ๊ธฐ - ์๋ฐ์คํฌ๋ฆฝํธ(nodejs)
https://www.acmicpc.net/problem/9095
const fs = require('fs');
let [n, ...input] = fs.readFileSync('dev/stdin').toString().trim().split('\n');
input = input.map(Number);
const occation = [0];
occation[1] = 1;
occation[2] = 2;
occation[3] = 4;
for (let i = 4; i <= Math.max(...input); i++) {
occation[i] = occation[i - 3] + occation[i - 2] + occation[i - 1];
}
input.forEach((v) => {
console.log(occation[v]);
});
DP๊ฐ์ ๋ฌธ์ ๋ฅผ ๋ณผ ๋ ์ฌ๊ท๋ก ๋ง ๋๋ฆด ์๊ฐ๋ณด๋ค DP๋ก ๋ฉ๋ชจํ๋ฉด์ ํ ๋ฌธ์ ์ธ์ง ํ์ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ์ ํ์์ ์๊ฐํด๋ณธ๋ค.
์ ๋ฌธ์ ๋
1์ 1,2,3์ ์ด์ฉํด ๋ง๋๋ ๊ฒฝ์ฐ์ ์ : 1
2๋ฅผ 1,2,3์ ์ด์ฉํด ๋ง๋๋ ๊ฒฝ์ฐ์ ์ : 2
3๋ฅผ 1,2,3์ ์ด์ฉํด ๋ง๋๋ ๊ฒฝ์ฐ์ ์ : 4
4๋ฅผ 1,2,3์ ์ด์ฉํด ๋ง๋๋ ๊ฒฝ์ฐ์ ์ : 7
์ด ์์์ N์ 1,2,3์ ์ด์ฉํด ๋ง๋๋ ๊ฒฝ์ฐ์ ์ : N-1, N-2, N-3์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ชจ๋ ํฉํ๋ฉด ๋๋ค๋ ์ ํ์์ ์ ์ถํ ์ ์๋ค.
์ ์ด๋ ๊ฒ ๋์ค๋ ์ง ์๊ฐํด๋ณด์.
1 =>
1
=> 1๊ฐ์ง
2 =>
1์์ 1+1
2
=> 2๊ฐ์ง
3 =>
1์์ 1+2,
2์์ 1+1+1
2์์ 2+1
3์์ 3
=> 4๊ฐ์ง
4 =>
1์์ 1+3
2์์ 1+1+2, 2+2
3์์ 1+1+1+1, 1+2+1, 2+1+1, 3+1
=> 7๊ฐ์ง
๊ท์น์ ๋ณด๋ฉด ์ด์ ์ซ์๋ค์ ์ฐธ๊ณ ํด์ 1์ฉ ๋ํด ํด๋น ์ซ์๋ฅผ ๊ตฌํ๋ ๋ชจ์ต์ ๋ณผ ์ ์๋ค.