728x90
풀이를 이해하려고 고민을 많이 했다. 조합을 사용하려고 했지만 안해봐도 시간 초과였고, dp 를 사용하는 건 알았다. 하지만 어떻게 구성을 해야 하는지 고민을 했는데 몰라서 구글링 했다.
dp 를 생성을 우선 해준다. 마감일을 기준으로 [기존 마감일 까지의 수익] 과 [새로운 마감일의 수익] 의 최댓값을 dp 에 저장을 해주는 방식이다.
from sys import stdin
N = int(stdin.readline())
dp = [0]*(N+1)
for i in range(1, N+1):
t, p = map(int, stdin.readline().split())
dp[i] = max(dp[i-1], dp[i])
if i+t<=N+1:
dp[i+t-1] = max(dp[i-1]+p, dp[i+t-1])
print(dp[-1])728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 12904 A와 B (0) | 2023.04.09 |
|---|---|
| [파이썬] 백준 5582 공통 부분 문자열 (0) | 2023.04.09 |
| [파이썬] 백준 1717 집합의 표현 (0) | 2023.04.08 |
| [파이썬] 백준 15686 치킨 배달 (0) | 2023.04.07 |
| [파이썬] 백준 17610 양팔 저울 (0) | 2023.04.04 |