dp로 최솟값만 끌고가며 연산한다.
for test in range(1, int(input()) + 1):
# 0, 1, 2, 3: 1일, 1달, 3개월, 1년
costs = list(map(int, input().split()))
annual_plans = [0] + list(map(int, input().split()))
dp = [0] * 13
for i in range(1, 13):
dp[i] = dp[i-1] + min(costs[0] * annual_plans[i], costs[1])
if i > 2:
dp[i] = min(dp[i], dp[i-3] + costs[2])
answer = min(dp[12], costs[3])
print(f'#{test} {answer}')
'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글
[SWEA][Python] 10966 물놀이를 가자 (1) | 2021.09.24 |
---|---|
[SWEA][Python] 1953 탈주범 검거 (0) | 2021.09.24 |
[SWEA][Python] 1949 등산로 조성 (0) | 2021.09.24 |
[SWEA][Python] 1232 사칙연산 (0) | 2021.09.23 |
[SWEA][Python] 1231 중위순회 (0) | 2021.09.23 |