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;
}
'Algorithm > dp' 카테고리의 다른 글
프로그래머스 보행자천국 c++ // dp, 경우의수는 dp를 의심하라. (0) | 2023.12.07 |
---|---|
백준 2565 전깃줄 c++ // dp, LIS(최장부분증가수열) 풀이 (0) | 2023.12.01 |
백준 2225 합분해 c++ // dp 규칙찾는 방법 (0) | 2023.11.29 |
백준 2294 동전2 c++ // dp 동전논리 정리, 규칙성발견 dp테이블 형식 (0) | 2023.11.29 |
백준 2293 동전1 c++ // dp, 경우의수는 덧셈이다! (0) | 2023.11.28 |