알고리즘

[C++] 백준 2747번 피보나치 수

J3SUNG 2019. 8. 24. 23:46
728x90

다이나믹 프로그래밍으로 문제를 풀었습니다.

점화식은 다음과 같습니다.

DP[i] = DP[i - 1] + DP[i - 2];

현재 위치의 값은 이전과, 그 이전의 값을 더한 값입니다.
이를 반복해서 n의 위치에 피보나치 수를 구할 수 있습니다.

 

#include <iostream>
#include <algorithm>
using namespace std;

int main(int argc, char *argv[])
{
	int n;
	long long DP[45];

	cin >> n;

	DP[0] = 0;
	DP[1] = 1;

	for (int i = 2; i <= n; ++i) {
		DP[i] = DP[i - 1] + DP[i - 2];
	}

	cout << DP[n] << endl;

	return 0;
}