chyam

[백준] 14501번, python - 퇴사 본문

백준

[백준] 14501번, python - 퇴사

chyam_eun 2025. 11. 4. 15:21

# 나의 풀이 (통과)

n = int(input())
d = [0]*(n+1)

t = [0]*(n+1)
p = [0]*(n+1)

for i in range(1,n+1):
    t[i],p[i] = list(map(int,input().split())) # 각 필요한 날짜, 수입 저장

for i in range(1,n+1):
    if i + t[i]-1 > n: # 필요한 날짜가 퇴사날을 초과
        continue
    # i + t[i]-1 는 현재 날짜 + 필요한 날짜로 끝나는날을 뜻함. 
    d[i+t[i]-1] = max(max(d[:i])+p[i],d[i+t[i]-1]) # 끝나는날 = 이전까지의 수익중 최고와 수익과 끝나는날 중 큰거로

print(max(d))
# 지피티가 고쳐준 풀이

n = int(input())
t = [0] * (n + 1)
p = [0] * (n + 1)
d = [0] * (n + 2)  # n+1일까지 커야 마지막 날 처리 가능

for i in range(1, n + 1):
    t[i], p[i] = map(int, input().split())

for i in range(1, n + 1):
    # 오늘(i)까지의 최대 수익을 다음날(i+1)로 전달. 나는 다음날로 전달하지 않아서 max를 사용함
    d[i] = max(d[i], d[i-1])
    # 오늘 상담을 했을 때 끝나는 날에 이익 반영
    if i + t[i] <= n + 1:
        d[i + t[i] - 1] = max(d[i + t[i] - 1], d[i - 1] + p[i])

print(max(d))