반응형
문제
나의 풀이
2가지 방식으로 풀이가 가능하다.
dp [i] = dp [i - 3] + dp [i - 2] + dp [i - 1] 임을 이용한 dp 방법,
0부터 1,2,3을 더하면서 경우의 수를 모두 매칭하는 재귀 방법
DP
let fs = require("fs");
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
const caseLEN = Number(input[0]);
const dp = {
0: 0,
1: 1,
2: 2,
3: 4,
};
let max = Math.max(...input);
for (let i = 4; i <= max; i++) {
dp[i] = dp[i - 3] + dp[i - 2] + dp[i - 1];
}
let answer = "";
for (let i = 1; i <= caseLEN; i++) {
answer += dp[input[i]] + "\n";
}
console.log(answer.trim());
재귀
let fs = require("fs");
let input = fs.readFileSync('/dev/stdin').toString().trim().split('\n')
let answer = 0;
let goal = 0;
let result = "";
function add(sum) {
if (sum > goal) return;
if (sum == goal) {
answer++;
return;
}
add(sum + 1);
add(sum + 2);
add(sum + 3);
}
for (let i = 1; i <= input[0]; i++) {
answer = 0;
goal = input[i];
add(0);
result += answer + "\n";
}
console.log(result.trim());
자세한 이론적인 설명은 아래 링크에서 확인하시면 됩니다. (저도 이걸 보고 배웠어요 ㅎ..)
반응형
'코딩테스트' 카테고리의 다른 글
[백준] 11057 - 오르막수(javascript) (0) | 2022.11.16 |
---|---|
[프로그래머스] level1. 신고 결과 받기 (javascript) (0) | 2022.01.17 |
[프로그래머스] level1. 최소직사각형 (javascript) (2) | 2021.12.14 |
[프로그래머스] level3. 순위 (javascript) (0) | 2021.12.07 |
[프로그래머스] level3. 가장 먼 노드 (javascript) (0) | 2021.11.19 |