[백준 2193] 다이나믹 프로그래밍 - 이친수

김민지·2023년 4월 4일
0

냅다 시작 백준

목록 보기
41/118

✨ 문제 ✨

✨ 정답 ✨

const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./예제.txt";
let input = fs.readFileSync(filePath).toString().trim();

// const fs = require('fs'); 
// let input = fs.readFileSync('/dev/stdin').toString().trim();

let N = +input
// console.log(N)

let dp = []
dp[0] = 0;
dp[1] = 1;
dp[2] = 1;
if (N === 1) console.log(1)
else if (N === 2) console.log(1)
else if (N >= 3) {
  for (let i = 3; i <= N; i++) {

    // N의 최대값을 대입해보고 BigInt 여부 확인
    // 어떻게 알아 근데
    // 콘솔 찍어보고 16자리 넘어가면 의심해보기
    dp[i] = BigInt(dp[i - 2]) + BigInt(dp[i - 1])
  }
  console.log(String(dp[N]))
}

💡💡 기억해야 할 점 💡💡

  1. BigInt를 써야 하는 경우를 알아두자. N의 최댓값을 대입해보고, 16자리가 넘어가면 BigInt를 사용해 보자.
profile
이건 대체 어떻게 만든 거지?

0개의 댓글