[백준]1003번 - 피보나치 함수
2022년 02월 28일
[해결 코드]
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().split("\n");
const [numOfTestCase, ...arr] = input.map((v) => +v);
const DP0 = new Array(41).fill(0);
const DP1 = new Array(41).fill(0);
DP0[0] = 1;
DP1[0] = 0;
DP0[1] = 0;
DP1[1] = 1;
for (let i = 2; i <= 40; i++) {
DP0[i] = DP0[i - 1] + DP0[i - 2];
DP1[i] = DP1[i - 1] + DP1[i - 2];
}
for (let i = 0; i < numOfTestCase; i++) {
console.log(`${DP0[arr[i]]} ${DP1[arr[i]]}`);
}
요즘 알고리즘 공부를 하다가 DP(다이나믹 프로그래밍) 부분이 약하다는 것을 느끼고 백준 사이트에서 DP 문제를 쉬운 난이도부터 풀어보려고 한다.
1003번 피보나치 함수 문제가 백준에서 제일 쉬운 DP문제가 아닐까 싶다..
[풀이]
0이 출력되는 횟수를 담은 배열과 1이 출력되는 횟수를 담은 배열을 각각 만들어줬다.
이후 작은 수부터 배열에 출력 횟수를 저장하도록 하는 Bottom-Up을 이용했다.
제출하고 보니 예전에 DP라는 걸 모른채로 풀어 시간 초과로 통과하지 못했던 문제였다.
지금이라도 해결해서 다행이다..!
Tags