컴퓨터 이론/알고리즘

백준 No.2748) 피보나치 수2

무무니 2020. 10. 25. 23:24

n번째 피보나치 수를 구하는 문제이다.

DP를 활용하여 풀면 수월하게 풀 수 있다.

 

DP를 사용하기 위해 우선 점화식을 확인하면

$ F_0 = 0 $

$ F_1 = 1 $

$F_{(n)}=F_{(n-1)}+F_{(n-2)}$               $(n \in\{2,3,...\})$

 

이며 각각

dp[0] = 0

dp[1] = 1

dp[n] = dp[n-1] + dp[n-2]

로 적용하여 변경하면 된다

 

n <= 90 이라는 적은 제한이 걸려있기 때문에

배열에 저장하여 계산하면 쉽게 풀 수 있다.

 

 

해당 코드는 아래와 같다.

#include <iostream>
#include <vector>

using namespace std;
int main()
{	
	int count;

	cin >>  count;

	vector<long long> dp;
	dp.push_back(0);
	dp.push_back(1);

	for (int i = 2 ; i <= count ; i ++)
	{
		dp.push_back( dp[i-2] + dp[i-1]);
	}

	cout << dp[count];
}