https://www.acmicpc.net/problem/14501
n=int(input())
t,p=[0 for i in range(n+1)],[0 for i in range(n+1)]
for i in range(n):
a,b=map(int,input().split())
t[i]=a
p[i]=b
dp=[0 for i in range(n+1)]
for i in range(n-1,-1,-1):
if t[i]+i>n:
dp[i]=dp[i+1]
else:
dp[i]=max(p[i]+dp[i+t[i]],d[[i+1]])
print(dp[0])
다이나믹프로그래밍 공부를 위해 풀어본 문제.. 제목이 재밌어보여서 품
dp문제를 풀때는 점화식을 잘 찾아내면 되는데 이번 문제에선 생각보다 어려웠다.
거꾸로 탐색한다는 생각만 할 수 있다면 수월하게 풀었을만한 문제이다.
728x90
'파이썬알고리즘' 카테고리의 다른 글
20210622#(47) 백준 11726 2×n 타일링(다이나믹 프로그래밍) (0) | 2021.06.22 |
---|---|
20210622#(46) 백준 9095 1, 2, 3 더하기(다이나믹 프로그래밍) (0) | 2021.06.22 |
20210621#(44) 백준 1003 피보나치 함수(다이나믹 프로그래밍) (0) | 2021.06.21 |
20210620#(43) 백준 1463 1로 만들기(다이나믹 프로그래밍) (0) | 2021.06.20 |
20210618#(42) 백준 11650 좌표 정렬하기 (0) | 2021.06.18 |