[문제보기]
2748. 피보나치 수2 (Silver 5)
2748번: 피보나치 수 2
피보나치 수는 0과 1로 시작한다. 0번째 피보나치 수는 0이고, 1번째 피보나치 수는 1이다. 그 다음 2번째 부터는 바로 앞 두 피보나치 수의 합이 된다. 이를 식으로 써보면 Fn = Fn-1 + Fn-2 (n>=2)가 된��
www.acmicpc.net
[풀이과정]
이 문제는 피보나치를 구하는 로직에서 메모리제이션을 사용을 하면 되는 문제이다.
필자는 dp[91] 배열을 만들어서 피보타치 수들을 배열에 저장해주면서 피보나치수를 구하였다.
[소스코드]
#include <iostream>
using namespace std;
long long dp[91] = {0};
long long function(int n){
if(dp[n] > 0){
return dp[n];
}
dp[n] = function(n-1) + function(n-2);
return dp[n];
}
int main(){
int n;
cin >> n;
dp[1] = 1;
dp[2] = 1;
cout << function(n);
}
[해결 과정 중 실수한 부분]
자료형을 생각 못했다. int -> long long으로 바꾸어주어 정답을 얻어냈다.
'알고리즘 스터디 > Beakjoon' 카테고리의 다른 글
[백준 17142][C++] 연구소3 (Gold4) (0) | 2020.09.06 |
---|---|
[백준 19238][C++] 스마트 택시 (Gold 4) (0) | 2020.09.03 |
[백준 2156][C++] 포도주 시식 (Silver 1) (0) | 2020.08.30 |
[백준 2193][C++] 이친수 (0) | 2020.08.29 |
[백준 1932][C++] 정수 삼각형 (Silver 1) (0) | 2020.08.29 |