Algorithm/SW Expert Academy

[Python] 1952. 수영장

느낌표 공장장 2021. 10. 12. 23:59
tc = int(input())
for idx in range(1, tc+1):
    charge = list(map(int, input().split()))    # 1일, 1달, 3달, 1년
    plan = list(map(int, input().split()))  # 1월부터 12월까지의 이용 계획

    dp = [0 for _ in range(12)]
    for i in range(12):
        dp[i] = dp[i-1] + min(plan[i] * charge[0], charge[1]) # 이전 달의 요금 + (1일 이용권으로 계산 vs 1달 이용권으로 계산)
        if i > 1:   # 3달 이상 됐다면
            dp[i] = min(dp[i], dp[i-3] + charge[2])   # 3달 이용권으로 할까 말까

    print('#{} {}'.format(idx, min(dp[-1], charge[3]))) # 1년 이용권으로 할까 말까

DFS대신 DP로 풀어보았다 !

'Algorithm > SW Expert Academy' 카테고리의 다른 글

[Python] 5251. 최소이동거리  (0) 2021.10.18
[Python] 2814. 최장경로  (0) 2021.10.13
[Python] 2105. 디저트 카페  (0) 2021.10.12
[Python] 4012. 요리사  (0) 2021.10.12
[Python] 1486. 장훈이의 높은 선반  (0) 2021.10.09