처음에 올라갈 수 있는 방법이 좀 햇갈렸다.
처음에 이런식으로 갈 수 있는지 아닌지 문제를 잘 이해를 못했었다..
이문제도 이해를 못하겠어서 바로 해설을 보고 이해를 하는 방향으로 진행을 함..
코드를 보면서 문제의 의도? 뜻이랑 이해를 할려고 하니까 이해는 바로 되던데 음....
아직 뭐가 맞는 방법인지는 잘 모르겠음..
이거랑 관련해서 포도주 시식 문제도 다시 풀어보도록 하자..
#include <iostream>
using namespace std;
#define MAX 301
#define endl "\n"
int cache[MAX];
int arr[MAX];
int main()
{
int n;
cin >> n;
for (int i = 1; i <= n; ++i)
cin >> arr[i];
cache[1] = arr[1];
cache[2] = arr[1] + arr[2];
cache[3] = max(arr[1], arr[2]) + arr[3];
for (int i = 4; i < n + 1; ++i)
cache[i] = max(cache[i - 3] + arr[i - 1], cache[i - 2]) + arr[i];
cout << cache[n];
return 0;
}