본문 바로가기
알고리즘

[백준/파이썬] #15486

by 룰루루 2025. 3. 20.

30분 타임어택을 하지는 못했지만, 대략적인 방법까지는 유추해냈다. 참고한 풀이와 비슷하게 DP 배열을 선언하고, 첫째 날부터 마지막 날까지의 각 날마다 얻을 수 있는 최대 상담료를 계산하면 되었다. 

import sys

input = sys.stdin.readline

N = int(input())
DP = [0] * (N+1)
time = [0] * (N+1)
price = [0] * (N+1)
for i in range(1, N+1):
    T, P = map(int, input().split())
    time[i] = T
    price[i] = P

for i in range(1, N+1):
    DP[i] = max(DP[i], DP[i-1])
    end_date = i + time[i] - 1
    if end_date <= N:
        DP[end_date] = max(DP[end_date], DP[i-1] + price[i])

print(DP[N])

 

'알고리즘' 카테고리의 다른 글

[백준/파이썬] #3151  (0) 2025.03.24
[백준/파이썬] #1106  (0) 2025.03.22
[백준/파이썬] #2294  (0) 2025.03.19
[백준/파이썬] #22860  (0) 2025.03.18
[백준/파이썬] #22859  (0) 2025.03.17