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
풀이 과정
n번째 피보나치 수를 출력하는 문제이다.
피보나치 수를 재귀로 구하면 너무 시간이 오래 걸린다.
fi[n] = fi[n-1] + fi[n-2]
다음과 같은 점화식을 사용해 동적 계획법으로 문제를 해결하였다.
소스 코드
#include <iostream>
using namespace std;
long long d[91] = {0};
int main() {
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int n;
cin >> n;
d[0] = 0; d[1] = 1; d[2] = 1;
for (int i = 3; i < 91; i++) {
d[i] = d[i-1] + d[i-2];
}
cout << d[n];
return 0;
}
'알고리즘 문제 풀이 > 백준' 카테고리의 다른 글
백준 3425 - 고스택 [C++] (0) | 2022.07.09 |
---|---|
백준 1927 - 최소 힙 [C++, 파이썬] (0) | 2022.07.06 |
백준 2805 - 나무 자르기 [C++] (0) | 2022.07.05 |
백준 2003 - 수들의 합 2 [C++] (0) | 2022.07.05 |
백준 1260 - DFS와 BFS [파이썬] (0) | 2022.06.27 |