728x90
반응형
기본 식 : dp[i] = MAX(P[i] + dp[i+T[i]], dp[i+1])
n = int(input())
t = [0 for _ in range(n)]
p = [0 for _ in range(n)]
for i in range(n):
t[i],p[i] = map(int,input().split())
dp = [0 for _ in range(n)]
if t[n-1] == 1 :
dp[n-1] = p[n-1]
for i in range(n-2, -1, -1):
day = i + t[i]
if day == n :
# 더 이상의 상담은 없음.
dp[i]= max(p[i], dp[i+1])
elif day < n :
dp[i] = max(p[i]+dp[day], dp[i+1])
elif day > n :
dp[i] = dp[i+1]
print (max(dp))
# Reference
백준 14501번. 퇴사 (Java, Python)
Problem 문제 링크 앞으로 남은 근무일과 상담일정이 주어졌을 때 상담으로 얻는 최대 수익을 구하는 문제입니다. Solution DP 문제입니다. for 문을 뒤에서부터 시작하여 dp 값을 차곡차곡 쌓아서
bcp0109.tistory.com
728x90
반응형
'백준 > 다이나믹 프로그래밍' 카테고리의 다른 글
# 1010 다리 놓기 (0) | 2020.09.13 |
---|---|
# 11052 카드 구매하기 - (0) | 2020.09.13 |
# 9461 파도반 수열 (0) | 2020.09.12 |
# 11727 타일링 2 (0) | 2020.09.12 |
# 10844 쉬운 계단 수 (0) | 2020.09.11 |