알고리즘 문제 풀기/SWEA
[SWEA 1952] 수영장 - 파이썬
hibscus
2021. 3. 14. 23:19
처음엔 어떻게 접근해야 할까 고민했는데, 힌트?를 얻고나니 문제가 아주 간단해졌다.
🎈 해당 달까지의 최소비용을 계산해 사용한다
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}')