728x90
728x90
문제
- 피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다.
- 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n ≥ 2)가 된다.
- n=17일때 까지 피보나치 수를 써보면 다음과 같다.
- 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597
- n이 주어졌을 때, n번째 피보나치 수를 구하는 프로그램을 작성하시오.
코드
#include<iostream>
#include<vector>
using namespace std;
int main(void)
{
int n;
cin >> n;
vector<long long> dp(n+1);
dp[0] = 0;
dp[1] = 1;
dp[2] = 1;
for(int i=3 ; i<n+1 ; i++) dp[i] = dp[i-1] + dp[i-2];
cout << dp[n];
}
- 대표적인 피보나치 수열 문제이기 때문에 dp[i] = dp[i-1] + dp[i-2] 의 점화식을 구해야한다.
- 주의할 점은 n의 값은 90까지 넣을 수 있기 때문에 실제로 int형으로 dp 배열을 구현하여 90을 넣으면 범위를 초과하기 때문에 dp 배열을 long long으로 해줘야 한다.
728x90
728x90
'Language > C++' 카테고리의 다른 글
[프로그래머스][Level3][힙][C++] 디스크 컨트롤러 - 컴도리돌이 (0) | 2021.08.14 |
---|---|
[프로그래머스][Level3][해시][C++] 베스트앨범 - 컴도리돌이 (0) | 2021.08.14 |
[프로그래머스][Level3][힙][C++] 이중우선순위큐 - 컴도리돌이 (0) | 2021.08.14 |
[프로그래머스][Level1][C++] 2021 KAKAO BLIND RECRUITMENT - 신규 아이디 추천 - 컴도리돌이 (0) | 2021.08.13 |
[프로그래머스][Level2][DFS] 2017 카카오코드 예선카카오프렌즈 - 컬러링북 - 컴도리돌이 (0) | 2021.08.13 |