BOJ(백준) 14501번 퇴사 파이썬
2021. 3. 23. 23:59ㆍ개인 공부 공간/Algorithm
14501번: 퇴사
첫째 줄에 백준이가 얻을 수 있는 최대 이익을 출력한다.
www.acmicpc.net
코드
import sys
r = sys.stdin.readline
N,*l=int(r()),
for _ in range(N):
l.append(list(map(int,r().split())))
max_pay = 0
dp = [0]*(N+1)
for i in range(N-1,-1,-1):
if i+l[i][0] > N:
dp[i] = max_pay
else:
dp[i] = max(l[i][1] + dp[i+l[i][0]], max_pay)
max_pay = dp[i]
print(max_pay)
해설
처음에 dp에 어떤 값을 저장해야 할지에 대해 고민을 많이 했습니다. 처음에는 그 특정 상담 일정까지 벌 수 있는 수입의 최댓값을 저장하려고 했지만 구현이 쉽지 않았습니다. 특정 상담일부터의 최대 이익을 저장하기로 정했고 이를 위해서 마지막날부터 역으로 순회하게 포문을 구현했습니다.
결과
'개인 공부 공간 > Algorithm' 카테고리의 다른 글
[프로그래머스] 가장 큰 정사각형 찾기 / 파이썬 (1) | 2021.03.24 |
---|---|
BOJ(백준) 18353번 병사 배치하기 파이썬 (0) | 2021.03.24 |
BOJ(백준) 1932번 정수 삼각형 파이썬 (0) | 2021.03.23 |
BOJ(백준) 2437번 저울 파이썬 (0) | 2021.03.23 |
이것이 코딩 테스트다 with 파이썬 - 큰 수의 법칙 (1) | 2021.03.23 |