-Code
import sys
input = sys.stdin.readline
n = int(input())
t, p = [], []
dp = [0] * (n + 1)
for _ in range(n):
ti, pi = map(int, input().split())
t.append(ti)
p.append(pi)
max_dp = 0
for i in range(n):
max_dp = max(dp[i], max_dp)
if i + t[i] <= n:
dp[i + t[i]] = max(p[i] + max_dp, dp[i + t[i]])
print(max(dp))
처음에는 이전 푸는 법과 똑같이 풀어서 답은 나오나 시간에서 문제가 생겨서 이 문제를 해결하지 못했습니다. 그래서 찾아본 결과 반복문을 하나 줄이는 방법이 있었고 이해하는 것에 시간도 좀 걸리고 해서 오래 걸렸습니다.
'Beakjoon&프로그래머스 > 파이썬' 카테고리의 다른 글
[백준/파이썬] 9063번 대지 (0) | 2022.05.27 |
---|---|
[백준/파이썬] 2178번 미로 탐색 (0) | 2022.05.26 |
[백준/파이썬] 2877번 4와 7 (0) | 2022.05.25 |
[백준/파이썬] 17390번 이건 꼭 풀어야 해! (0) | 2022.05.24 |
[백준/파이썬] 21275번 폰 호석만 (0) | 2022.05.23 |