🔥 작성코드
T = int(input())
for test_case in range(1, T+1):
d, m, m3, y = map(int, input().split())
lst = list(map(int, input().split()))
dp = [0 for _ in range(12)]
dp[0] = min(lst[0]*d, m)
for i in range(1, 12):
if i == 11:
dp[i] = min(dp[i-1]+lst[i]*d, dp[i-1]+m, dp[i-3]+m3, y)
elif i >= 3:
dp[i] = min(dp[i-1]+lst[i]*d, dp[i-1]+m, dp[i-3]+m3)
elif i == 2:
dp[i] = min(dp[i-1]+lst[i]*d, dp[i-1]+m, m3)
else:
dp[i] = min(dp[i-1]+lst[i]*d, dp[i-1]+m)
print(f'#{test_case} {dp[11]}')
⭕ 해설
- 첫째 달부터 마지막 달까지 최소 누적합을 저장해나갔습니다.
- 처음(dp[0] == 첫 번째 달)에는 한 달 입장료와 하루 입장료*입장한 날을 비교하여 최솟값을 저장
- 다음부터는 이전달에 저장된 최소값에 이번달에 내야하는 최소값을 저장해나가줍니다.
- 3월 이후로는 비교해야 할 값(3개월 이용권)이 하나 더 생기고 12월에는 연간이용권을 고려해줍니다.
'Algorithm > SWEA' 카테고리의 다른 글
[swea] 4366. 정식이의 은행업무 python (0) | 2022.03.25 |
---|---|
[swea] [모의 sw 역량테스트] 2117. 홈 방범 서비스 python (0) | 2022.03.25 |
[SWEA] [모의 SW 역량테스트] 4012. 요리사 (python) (0) | 2022.03.17 |
[SWEA] [모의 SW 역량테스트] 1953 탈주범 검거 (python) (0) | 2022.03.17 |
[SWEA][S/W 문제해결 기본] 9일차 - 중위순회 (python) (0) | 2022.03.16 |