[백준 DP] 퇴사(python)

이진규·2022년 8월 21일
1

백준(PYTHON)

목록 보기
77/115

문제

https://www.acmicpc.net/problem/14501

나의 코드

"""

"""

from sys import stdin
input = stdin.readline

n = int(input())
s = [ list(map(int, input().split())) for _ in range(n) ]
dp = [0] * (n+1)

for i in range(n-1, -1, -1):
    if i + s[i][0] > n: # 해당 날짜에 진행을 못하면 다음날의 값을 불러옴
        dp[i] = dp[i+1]
    else:
        dp[i] = max(s[i][1] + dp[i + s[i][0]], dp[i+1]) # 해당 날짜와 그 날짜의 일수만큼 뒤의 이익이랑, 다음날의 값중 최대값

print(max(dp))
    

설명

DP를 뒤에서 부터 반복문 돌리는게 중요

참고 자료

profile
항상 궁금해하고 공부하고 기록하자.

0개의 댓글