14501번 퇴사

14501번 퇴사 백준 알고리즘 문제 풀이

간단한 dp 문제였다. 15%에서 자꾸 틀려서 뭐가 문제인가 좀 고민했는데,

dp배열에 값을 안 넣어준 부분 때문이였다.

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

int main()
{
    int n;
    pair<int, int> arr[17];
    int dp[17] = {
        0,
    };
    scanf("%d", &n);
    for (int i = 0; i < n; i++)
        scanf("%d%d", &arr[i].first, &arr[i].second);
    for (int i = n - 1; i >= 0; i--)
    {
        int t = arr[i].first;
        int p = arr[i].second;
        int day = n - i; //가능한 날짜 수
        if (t <= day)
        {
            if (i + t <= n)
            {
                dp[i] = max(dp[i + t] + p, dp[i + 1]);
            }
        }
        else
        {
            dp[i] = dp[i + 1];
        }
    }
    printf("%d\n", dp[0]);
    return 0;
}