본문 바로가기
Beakjoon&프로그래머스/파이썬

[백준/파이썬] 15486번 퇴사 2

by 현장 2022. 5. 26.

-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))

처음에는 이전 푸는 법과 똑같이 풀어서 답은 나오나 시간에서 문제가 생겨서 이 문제를 해결하지 못했습니다. 그래서 찾아본 결과 반복문을 하나 줄이는 방법이 있었고 이해하는 것에 시간도 좀 걸리고 해서 오래 걸렸습니다.