[백준 14501 실3] 퇴사 (DP/python) -/3

밀루·2023년 4월 6일

백준 문제풀이

목록 보기
30/51

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

import sys
input = sys.stdin.readline

if __name__ == "__main__":
    T = int(input())
    t = [] # 일해야하는 날짜
    p = [] # 금액
    d = [0 for _ in range(T+2)]
    t.append(0)
    p.append(0)
    for _ in range(T):
        date, pay = map(int, input().split())
        t.append(date)
        p.append(pay)
    for i in range(T, 0, -1):
        if (i+t[i] <= T+1):
            d[i] = max(d[i+t[i]]+p[i], d[i+1])
        else: d[i] = d[i+1]
    
    print(max(d))

t일이 목표라면, t일부터 거꾸로 내려가면서 해당 일에 일을 할 수 있을 경우 일을 했을때 얻는 값 vs 일을 안 했을때 얻는 값을 비교한다

profile
벨로그에 틀린 코드나 개선할 내용이 있을 수 있습니다. 지적은 언제나 환영합니다.

0개의 댓글