728x90
반응형
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
문제해결
- DP를 어떻게 쓸지 처음에 막막했다.
- dp[i]를 i 번째 요일까지 일 했을 때 최대 이익이라고 정의하고 M을 통해 실시간으로 최대 이익을 계산하면 된다.
CODE
import sys
input = sys.stdin.readline
n = int(input())
time, point = [], []
dp = [0]*(n+1)
for i in range(n):
x, y = map(int, input().split())
time.append(x)
point.append(y)
M = 0
for i in range(n):
M = max(M,dp[i])
if i + time[i] >n: continue
dp[i+time[i]] = max(M+point[i], dp[i+time[i]])
dp[n] = max(M,dp[n])
print(dp[n])
728x90
반응형
'알고리즘 > [python] 백준 BOJ' 카테고리의 다른 글
[python] 백준 2240 자두나무 (0) | 2023.04.17 |
---|---|
[python] 백준 2229 조 짜기 (0) | 2023.04.16 |
[python] 백준 1508 레이스 (0) | 2023.04.16 |
[python] 백준 1371 가장 많은 글자 (0) | 2023.04.14 |
[python] 백준 11060 점프 점프 (0) | 2023.04.13 |
댓글