백준

백준 : 포도주 시식 , 계단 오르기

E재HO 2022. 2. 12. 15:05

#include <iostream>
#include <algorithm>
using namespace std;

int N;
int DP[10001];
int arr[10001] = { 0, };

int main() {
    cin >> N;
    for (int i = 1; i <= N; i++)
        cin >> arr[i];
    DP[1] = arr[1];
    DP[2] = arr[1] + arr[2];
    for (int i = 3; i <= N; ++i) {
        DP[i] = max(DP[i - 1], max(DP[i - 3] + arr[i - 1] + arr[i], DP[i - 2] + arr[i]));
    }
    cout << max(DP[N - 1], DP[N]);
    return 0;
}

포도주 시식문제

 

#include <iostream>
using namespace std;

int N;
int DP[301];
int arr[301] = { 0, };

int main() {
    cin >> N;
    for (int i = 1; i <= N; i++)
        cin >> arr[i];

    DP[1] = arr[1];
    DP[2] = arr[1] + arr[2];
    DP[3] = max(arr[1], arr[2]) + arr[3];
    for (int i = 4; i <= N; i++)
        DP[i] = max(DP[i - 2],DP[i - 3] + arr[i - 1]) + arr[i];

    cout <<DP[N];
}

계단 오르기

 

점화식이 비슷한 두 문제를 같이 풀어봤다 . DP 문제는 왤케 감이 안오나 모르것다 ㅠ DP알려줄사람ㅜ