티스토리 뷰
title: "피보나치 함수(1003)"
category: 백준[Class-3]
tags: [C++, JavaScript, 백준]
date: "2021-04-01"
문제 링크
C++
#include <iostream>
#include <string>
#include <vector>
using namespace std;
// 문제 풀이 함수
void solution(){
int t;
cin >> t;
// dp(n): [0의 개수, 1의 개수]
// dp(0): [1, 0] = [1, fibo(0)]
// dp(1): [0, 1] = [fibo(0), fibo(1)]
// dp(2): [1, 1] = [fibo(1), fibo(2)]
// dp(3): [1, 2] = [fibo(2), fibo(3)]
// dp(4): [2, 3] = [fibo(3), fibo(4)]
// dp(5): [3, 5] = [fibo(4), fibo(5)]
vector<int> fibo(41);
fibo[0]=0;
fibo[1]=1;
for(int i=2; i<=40; i++){
fibo[i] = fibo[i-1]+fibo[i-2];
}
// dp(0)을 위해 앞에 1추가
fibo.insert(fibo.begin(), 1);
for(int i=0; i<t; i++){
int n;
cin >> n;
cout<<fibo[n]<<" "<<fibo[n+1]<<"\n";
}
}
bool exists(const char* fileName){
FILE* fp;
if((fp = fopen(fileName, "r"))){
fclose(fp);
return true;
}
return false;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
if(exists("stdin")){
freopen("stdin", "r", stdin);
solution();
fclose(stdin);
}
else{
solution();
}
return 0;
}
JavsScript
const fs = require("fs");
const input = fs.readFileSync("dev/stdin").toString().trim().split("\n");
// 문제 풀이
const t = +input[0];
// dp(n): [0의 개수, 1의 개수]
// dp(0): [1, 0] = [1, fibo(0)]
// dp(1): [0, 1] = [fibo(0), fibo(1)]
// dp(2): [1, 1] = [fibo(1), fibo(2)]
// dp(3): [1, 2] = [fibo(2), fibo(3)]
// dp(4): [2, 3] = [fibo(3), fibo(4)]
// dp(5): [3, 5] = [fibo(4), fibo(5)]
// 피보나치 수열 구하기
const fibo = Array.from({ length: 41 });
fibo[0] = 0;
fibo[1] = 1;
for (let i = 2; i <= 40; i++) {
fibo[i] = fibo[i - 1] + fibo[i - 2];
}
fibo.unshift(1); // dp(0)의 0의 개수 추가
const log = [];
for (let i = 1; i <= t; i++) {
const n = +input[i];
log.push([fibo[n], fibo[n + 1]]);
}
console.log(log.map((v) => v.join(" ")).join("\n"));
728x90
반응형
'Baekjoon Solutions > Class-3' 카테고리의 다른 글
[백준] 팩토리얼 0의 개수(1676) (0) | 2021.04.06 |
---|---|
[백준] 1로 만들기(1463) (1) | 2021.04.06 |
[백준] 비밀번호 찾기(17219) (0) | 2021.04.01 |
[백준] 듣보잡(1764) (0) | 2021.04.01 |
[백준] 나는야 포켓몬 마스터 이다솜(1620) (1) | 2021.04.01 |
댓글