다이나믹 프로그래밍을 사용하는 문제
1,2,3까지는 직접 경우의 수를 구해보자
4부터는 각각 한단계 전인 3, 2, 1 일때의 경우의 수의 합과 같다.(1,2,3 을 더해주므로)
bottom up 방식으로 구현을 위해 배열을 만들고 배열의 인덱스에 각각의 수를 올려가면서 저장해준다
인덱스로 필요한 수들만 꺼내서 계산하면 완성이다
https://www.acmicpc.net/problem/9095
let input = [];
const readline = require("readline").createInterface({
input: process.stdin,
output: process.stdout,
});
readline.on("line", (line) => {
input.push(line);
});
readline.on("close", () => {
solution(input);
process.exit();
});
const solution = (inp) => {
inp.shift();
let arr = Array(14).fill(0);
arr[1] = 1;
arr[2] = 2;
arr[3] = 4;
let ans = [];
for (el of inp) {
let n = Number(el);
for (let i = 4; i < 14; i++) {
arr[i] = arr[i - 1] + arr[i - 2] + arr[i - 3];
}
ans.push(arr[n]);
}
console.log(ans.join("\n"));
};
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 11727/javascript] 2Xn 타일링 2 (0) | 2022.09.28 |
---|---|
[백준 3022/javascript] PRASE (0) | 2022.09.27 |
[백준 1966/javascript] 프린터 큐 (0) | 2022.09.26 |
[백준 15904/javascript] UCPC는 무엇의 약자일까? (0) | 2022.09.24 |
[백준 15655/javascript] N과 M (6) (0) | 2022.09.23 |
댓글