알고리즘
[백준] 15486번: 퇴사 2 - python
육빔
2024. 5. 6. 21:01
728x90
반응형
https://www.acmicpc.net/problem/15486
아까 푼 퇴사 1하고 뭐가 다른지 잘 모르겠는 문제
T, P에 값을 저장한 뒤, 뒤에서부터 값이 딱 퇴사일과 같을 경우에만 dp에 값을 저장하면서 저장시에는 전 날, T전 날 + P 가격과 비교하면서 값을 저장해준다. 만약 값이 퇴사일을 넘을시에는 전에 있던 값을 그대로 옮기면서 첫날까지 오면 첫날에 최대값이 나오게 된다.
n = int(input())
T = []
P = []
dp = [0] * (n+1)
for _ in range(n):
a, b = map(int, input().split())
T.append(a)
P.append(b)
for i in range(n-1, -1 , -1):
if i+T[i] <= n:
dp[i] = max(dp[i+1], dp[i + T[i]]+P[i])
else:
dp[i] = dp[i+1]
print(dp[0])
완성
728x90
반응형