https://www.acmicpc.net/problem/15486
15486번: 퇴사 2
첫째 줄에 N (1 ≤ N ≤ 1,500,000)이 주어진다. 둘째 줄부터 N개의 줄에 Ti와 Pi가 공백으로 구분되어서 주어지며, 1일부터 N일까지 순서대로 주어진다. (1 ≤ Ti ≤ 50, 1 ≤ Pi ≤ 1,000)
www.acmicpc.net
import sys
input = sys.stdin.readline
N = int(input())
arr = [list(map(int,input().split())) for _ in range(N)]
dp = [0] * (N+1)
max_p = 0
for i in range(N):
max_p = max(max_p,dp[i]) # 현재 저장된 돈을 이전 최대 금액과 비교
end = i + arr[i][0] # 일이 끝나는 날로 갱신
if end <= N: # 일을 그만두기 전에 끝난다면?
dp[end] = max(max_p + arr[i][1], dp[end]) # 이전 최대 금액과 끝나는 날의 버는 돈을 비교
print(max(dp)) # 벌 수 있는 가장 큰 금액 출력
'백준' 카테고리의 다른 글
백준 1439. 뒤집기 (0) | 2024.03.15 |
---|---|
백준 1932. 정수 삼각형 (0) | 2024.03.13 |
백준 11659. 구간 합 구하기4 (0) | 2024.03.12 |
백준 5635. 생일 (0) | 2024.03.11 |
백준 12852. 1로 만들기2 (0) | 2024.03.10 |