반응형
https://www.acmicpc.net/problem/14501
풀이
n = int(input())
answer = [(0,0)]
for day in range(1,n+1):
time, price = map(int,input().split())
answer.append((time,price))
dp = [0]*(n+1)
for i in range(1,n+1):
time = answer[i][0] - 1
price = answer[i][1]
day = time+i
# 상담을 안하는 날이면 기존값과 전날값중 큰것 비교
dp[i] = max(dp[i-1],dp[i])
if day<=n:
dp[day] = max(dp[i-1] + price, dp[day]) # 이전값 가져오기
print(dp[n])
1. 걸리는 시간과 비용을 리스트에 넣어줌
2. 상담을 안하는 날이면 기존값과 전날값중 큰 것 비교
3. 상담을 하는 날이고, 가능하다면(DAY <=N) 이전값에 비용을 더한 것과 기존값 중 비교
반응형
'알고리즘' 카테고리의 다른 글
[BOJ/완전탐색] 15686 치킨배달 (0) | 2023.09.19 |
---|---|
[프로그래머스/Lv2] 땅따먹기(동적 프로그래밍) (0) | 2023.09.19 |
[구름톤 챌린지 종료] Day 20 - 연결 요소 제거하기(그래프 탐색) (0) | 2023.09.12 |
[구름톤 챌린지] Day 19 - 대체 경로(그래프 최단 경로) (0) | 2023.09.12 |
[구름톤 챌린지] Day 18 - 중첩 점(동적 프로그래밍) (0) | 2023.09.12 |