Input
첫째 줄에 N (1 ≤ N ≤ 15)이 주어진다.
둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 5, 1 ≤ Pi ≤ 1,000)
1 | N = int(input()) |
Output
첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.
1 | print(dp[0]) |
DP
역순으로 접근해 무조건 index 0 값에 최대를 담도록 함.
현재 일자
i
에 기간T[i]
를 더했을 때N+1
보다 작아야 하므로, 예외의 경우 이전 값dp[p+1]
을 유지한다.1
2if i+T[i] > N:
dp[i] = dp[i+1]범위 내에 드는 경우 최대 이익을 구하는 조합 을 구해야 하므로, 이전 값
dp[i+1]
과 현재 비용P[i]
에T[i]
이후의 비용을 더한 값 중 max 값을 취한다.1
2else:
dp[i] = max(dp[i+1], P[i]+dp[i+T[i]])