i번째 날까지 얻을 수 있는 금액을 기록할 때, 두 가지를 유념해야 함
dp[i + t - 1] = p + dp[i-1]
을 해줘야 한다. dp[i + t - 1]
과 새로 계산한 최대 금액 p + dp[i-1]
중 더 큰 값으로 저장해줘야 한다.dp[i + t - 1] = max(dp[i + t - 1], p + dp[i - 1]
해줘야 함dp[i]
는 dp[i-1]
이 될 수 있다. dp[i] = max(dp[i], dp[i - 1]
해줘야 함. import sys
input = sys.stdin.readline
if __name__ == '__main__':
n = int(input())
t_p = [[0, 0]] + [list(map(int, input().split())) for _ in range(n)]
dp = [0] * (n + 1)
for i in range(1, n + 1):
t, p = t_p[i]
try:
dp[i] = max(dp[i], dp[i - 1])
dp[i + t - 1] = max(dp[i + t - 1], p + dp[i - 1])
except IndexError:
continue
print(dp[-1])