[백준] 14501번(python 파이썬) 퇴사
2021. 3. 30. 15:18ㆍ발돋움/알고리즘
728x90
반응형
728x90

n = int(input())
t = [0] * (n + 1)
p = [0] * (n + 1)
dp = [0] * (n + 1)
for i in range(n):
t[i], p[i] = map(int, input().split())
for i in range(n - 1, -1, -1): #거꾸로
if t[i] + i > n: # 현재 날짜에 상담 일수를 더했을때 n보다 크면 불가능
dp[i] = dp[i + 1] # 맨 마지막이 0이기 때문에 불가능하면 계속 0
else:
dp[i] = max(p[i] + dp[t[i] + i], dp[i + 1]) # 옆에 것과 더할 수 있는 합중에 큰것을 저장
print(dp[0])
앞에서부터 보는것이 아니라 뒤에서부터 보면 되는 문제이다.
아래는 내가 이해한걸 기억하기 위해 그려둔 설명이다.


728x90
반응형
'발돋움 > 알고리즘' 카테고리의 다른 글
| [백준] 10972번 (python 파이썬) 다음 순열 (0) | 2021.04.04 |
|---|---|
| [백준] 2529번 (python 파이썬) 부등호 (0) | 2021.03.30 |
| [백준] 1248번(python 파이썬) 맞춰봐 (0) | 2021.03.28 |
| [백준] 1759번 (python 파이썬) 암호만들기 (0) | 2021.03.27 |
| [백준] 15652번 (python 파이썬) N과 M(4) (0) | 2021.03.27 |