#include <iostream> #include <algorithm> using namespace std; int n; int stair[301]; int cache[301]; int dp (int x){ if(x==0) return 0; if(x==1) return stair[0]; if(x==2) return stair[0]+stair[1]; if(x==3) return max(stair[0]+stair[2],stair[1]+stair[2]); if(cache[x] != 0) return cache[x]; return cache[x] = max(dp(x-2), dp(x-3)+stair[x-2]) + stair[x-1]; } int main() { cin >> n; for (int i = 0; i < n; i++) { cin >> stair[i]; } cout << dp(n); return 0; } | cs |
'백준' 카테고리의 다른 글
[C++] 백준(BAEKJOON) 10844 (0) | 2019.08.16 |
---|---|
[C++] 백준(BAEKJOON) 1005 (0) | 2019.03.23 |
[C++] 백준(BAEKJOON) 1463 (0) | 2019.03.14 |
[C++] 백준(BAEKJOON) 1149 (0) | 2019.03.13 |
[C++] 백준(BAEKJOON) 1003 (0) | 2019.03.13 |