[문제보기]

 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으로 바꾸어주어 정답을 얻어냈다.