[백준 14501] 퇴사

Junyoung Park·2022년 3월 6일
0

코딩테스트

목록 보기
207/631
post-thumbnail

1. 문제 설명

퇴사

2. 문제 분석

퇴사 2와 동일 문제.

3. 나의 풀이

import sys

n = int(sys.stdin.readline().rstrip())
t = []
p = []
for _ in range(n):
    small_t, small_p = map(int, sys.stdin.readline().rstrip().split())
    t.append(small_t)
    p.append(small_p)

dp = [0 for _ in range(n+1)]
local_max = 0

for idx in range(n):
    local_max = max(local_max, dp[idx])
    # idx 날까지 얻을 수 있는 최대 비용
    last_work = t[idx] + idx
    # last_work까지 일해야 한다.
    if last_work > n: continue
    # 근무 불가능한 상담일 때
    dp[last_work] = max(local_max + p[idx], dp[last_work])
    # last_work 날 얻는 총 비용
    # local_max(idx날 일 아직 시작 X 얻는 로컬 최댓값) + p[idx] (last_work까지 일한다)
    # dp[last_work] idx 시작한 날 이외에도 last_work 끝나는 날 기록한 기존의 최댓값

print(max(dp))
profile
JUST DO IT

0개의 댓글