728x90
문제
https://www.acmicpc.net/problem/1003
1003번: 피보나치 함수
각 테스트 케이스마다 0이 출력되는 횟수와 1이 출력되는 횟수를 공백으로 구분해서 출력한다.
www.acmicpc.net
코드
//실버3 피보나치 함수
const fs = require("fs");
const filePath = process.platform === "linux" ? "/dev/stdin" : "./input.txt";
let input = fs.readFileSync(filePath).toString().trim().split("\r\n");
let inputIndex = 0;
let testCase = Number(input[inputIndex++]);
while (testCase--) {
let num = Number(input[inputIndex++]);
let fibonacci = new Array(num).fill(0); //num개의 원소를 담을 수 있는 배열
let index = 0;
//fibonacci = [0의 count, 1의 count]
fibonacci[index++] = [1, 0]; //fibo(0) = 0
fibonacci[index++] = [0, 1]; //fibo(1) = 1
//fibo(0), fibo(1)은 초기화해두었기 때문에 index=2부터 시작
for (index = 2; index <= num; index++) {
//fibonacci[num] = fibonacci[num-1] + fibonacci[num-2] 공식 이용
fibonacci[index] = [
fibonacci[index - 1][0] + fibonacci[index - 2][0],
fibonacci[index - 1][1] + fibonacci[index - 2][1],
];
}
console.log(fibonacci[num].join(" "));
}
후기
- DP의 기초를 맛보기 위해 피보나치 문제를 풀어보았다. 물론 DP 문제 중에서는 아주 기초중에 기초라지만 재귀의 기초를 이해하는 데 도움이 됐다.
- 그런데 이 문제는 당연히 재귀를 써야만 하는 건줄 알았는데, 다른 분들의 풀이를 보다가 재귀를 사용하지 않고 오직 변수만 사용해서 count++ 하는 식으로 푼 풀이도 있었다.
잘못된 내용이나 수정이 필요한 내용이 있으면 언제든 댓글 달아주세요 감사합니다 😀
'알고리즘 > BOJ' 카테고리의 다른 글
[백준] N과 M(2) / JavaScript / node.js (0) | 2022.02.19 |
---|---|
[백준] N과 M(1) / JavaScript / node.js (0) | 2022.02.19 |
[백준] 소수 구하기 / JavaScript / node.js (0) | 2022.02.15 |
[백준] 통계학 / JavaScript / node.js (0) | 2022.02.14 |
[백준] 좌표 정렬하기 / JavaScript / node.js (0) | 2022.02.13 |