간단한 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;
}