본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 2748/c++]피보나치 수 2

by tokkiC 2022. 7. 17.

이전 수와 현재 수를 더해서 다음 수를 만들어 내는 수열을 피보나치 수열이라고 한다

피보나치 수열은 다이나믹 프로그래밍 = 동적 계획법 의 분류에 해당되는데

스스로 재귀하며 답을 도출해내는 과정에서 이전의 계산한 결과는 배열에 넣어서

매번 따로 계산 없이 배열에서 이전 결과값을 그대로 가져와 사용하여 효과적으로 계산할 수 있다

벡터를 이용해서 풀었지만 수가 워낙 크다보니 배열이 많이 필요하지 않아서

앞으로는 간단히 정적 배열로 풀어도 될 것같다

https://www.acmicpc.net/problem/2748

 

2748번: 피보나치 수 2

피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;

int main(){
	
	int n;
	vector<long long> v;
	
	cin >> n;
	v.emplace_back(0);
	v.emplace_back(1);
	if (n >= 2)
	{
		for (int i = 2; i <= n; i++)
		{
			v.emplace_back(v[i-1]+v[i-2]);
		}	
	}
	cout << v[n] <<"\n";
	
	return 0;
}

댓글