관리 메뉴

Mini

백준 2748 피보나치수2 c++ // 탑다운 dp 형식 본문

Algorithm/dp

백준 2748 피보나치수2 c++ // 탑다운 dp 형식

Mini_96 2023. 11. 30. 15:19

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

 

#include <bits/stdc++.h>
using namespace std;
long long dp[91], n;
long long fibo(long long idx) {
    //기저사례
    if (idx == 0 || idx == 1) return idx;

    //메모
    long long& ret = dp[idx];
    if (ret) return ret; //값이 있으면 바로리턴

    //로직
    return ret = fibo(idx - 1) + fibo(idx - 2);
}
int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cin >> n;
    cout << fibo(n) << '\n';
    return 0;
}