https://www.acmicpc.net/problem/2455
- 사용언어 : node.js
- 알고리즘 : 임의 정밀도 / 큰 수 연산
- Solved.ac Tier : Silver V
node.js 코드
1. 문제 정리
피보나치 수열이란 그 전 두 항의 합으로 계산되는 수열을 뜻한다.
다음과 같이 1 - > 1 - > 2 - > 3 - > 5 - > 8 - > 13같이 그 전 두 항의 합으로 계산되는 수열을 피보나치 수열이라고 한다는 것 이다.
예제 출력만 해도 354224848179261915075라는 어마어마하게 큰 수가 나오기 때문에 JS에서도 제대로 표현 할 수 없는 수의 단위임을 알기에 BigInt()를 사용 해서 큰 수 연산을 해주었다.
let fibonacci = [0, 1, 1]
for(let i = 3; i <= input; i++){
fibonacci.push(BigInt(fibonacci[i-1]) + BigInt(fibonacci[i-2]))
}
console.log(BigInt(fibonacci[input]).toString())
BigInt는 값 마지막에 n이 붙기 때문에 toString 메서드를 사용 해 주어야 원하는 값이 출력 될 수 있다는 것을 명심해야 한다.
2. 완성 코드
const filePath = process.platform === 'linux' ? '/dev/stdin' : '../ans.txt';
let input = require('fs').readFileSync(filePath).toString().trim().split("\n").map((e)=>+e);
let fibonacci = [0, 1, 1]
for(let i = 3; i <= input; i++){
fibonacci.push(BigInt(fibonacci[i-1]) + BigInt(fibonacci[i-2]))
}
console.log(BigInt(fibonacci[input]).toString())
질문또는 코드 리뷰는 댓글로 부탁드립니다!
'백준 알고리즘 > Lang-node.js' 카테고리의 다른 글
[백준/node.js] 1012번 유기농 배추 (0) | 2022.04.12 |
---|---|
[백준/node.js] 11724번 연결 요소의 개수 (0) | 2022.04.12 |
[백준/node.js] 18411번 試験 (Exam) (0) | 2022.04.12 |
[백준/node.js] 4963번 섬의 개수 (0) | 2022.04.12 |
[백준/node.js] 1049번 기타줄 (0) | 2022.03.19 |