알고리즘 문제 풀기/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}')