처음엔 어떻게 접근해야 할까 고민했는데, 힌트?를 얻고나니 문제가 아주 간단해졌다.
🎈 해당 달까지의 최소비용을 계산해 사용한다
1월 | 2월 | 3월 | 4월 | 5월 | 6월 | 7월 | 8월 | 9월 | 10월 | 11월 | 12월 |
0 | 0 | 2 | 9 | 1 | 5 | 0 | 0 | 0 | 0 | 0 | 0 |
0 | 0 | 20 | 60 | 70 | 110 | 110 | 110 | 110 | 110 | 110 | 110 |
첫번째 행은 사용일수
두번째 행은 누적된 최소비용
T = int(input())
for tc in range(1, T+1):
price = list(map(int, input().split()))
plan = [0] + list(map(int, input().split()))
expense = [0 for _ in range(13)]
for i in range(1, 13):
# 하루, 한달 비교
expense[i] = min(plan[i] * price[0], price[1]) + expense[i-1]
# 3개월 이상부터 3달까지 비교
if i > 2:
expense[i] = min(expense[i], price[2] + expense[i-3])
# 1년 비교
ans = min(expense[12], price[3])
print(f'#{tc} {ans}')
'알고리즘 문제 풀기 > SWEA' 카테고리의 다른 글
[SWEA 1795] 인수의 생일파티 (0) | 2021.05.02 |
---|---|
SWEA 2806. N- queen _ python (0) | 2021.04.21 |
[SWEA 1949] 등산로 - DFS, 파이썬 (0) | 2021.03.14 |
SWEA 1216. 회문 2 - 파이썬 (0) | 2021.03.06 |
[SWEA 1223] 계산기2 - 스택을 이용한 후위표기식 (0) | 2021.02.25 |