[JS/백준]{dp}(2748) 피보나치 수 2
2022년 10월 04일
백준 문제 링크
문제 설명
피보나치수 5와 완전 똑같은 문제이다.
점화식 : dp[i] = dp[i-1] + dp[i-2]
하지만 함정이있다. n이 90까지 있는데 90을 출력 하면 2880067194370816000이 나온다
2880067194370816120이 나와야 하는데 120은 어디 간것일까? 그이유는 너무 숫자가 크기 때문이다
그렇기 때문에 BigInt로 계산을 해야한다
코드
const input = require("fs")
.readFileSync(process.platform === "linux" ? "dev/stdin" : "input.txt")
.toString()
.trim();
let dp = Array(91).fill(0);
dp[1] = 1;
for (let i = 2; i < +input + 1; i++) {
dp[i] = BigInt(dp[i - 1]) + BigInt(dp[i - 2]);
}
console.log(String(dp[input]));