728x90
https://www.acmicpc.net/problem/15486
n = int(input())
task = []
price = [] # price
dp = [0] * (n+1)
for _ in range(n):
t, p = map(int, input().split())
task.append(t)
price.append(p)
# result 예제 10번에서 예외케이스 처리 -> dp[10]이 최댓값(60) + price[7] 로 갱신되어야 함
result = 0 # 이전의 dp 값들중 최댓값 저장하기
for i in range(n):
result = max(dp[i], result)
if i + task[i] >= n+1:
continue
dp[i+task[i]] = max(result+price[i], dp[i+task[i]])
print(max(dp))
728x90
'Algorithm (PS)' 카테고리의 다른 글
[백준] 2283 구간자르기 (Python/파이썬) - 부분합 & 투포인터 (0) | 2023.01.17 |
---|---|
[백준] 14925번: 목장 건설하기 Python - DP (0) | 2023.01.15 |
[프로그래머스] 이모티콘 할인행사 Python (0) | 2023.01.13 |
[백준] 14890번 경사로 Python 구현문제 (0) | 2023.01.13 |
[프로그래머스] 오픈채팅방 Python3 - Kakao 2019 (0) | 2023.01.12 |