SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
def f(i, s, mon, mon3, year): # i월에 지불하는 방법을 결정 함수, s 이전달까지 지불 비용
global min_s
if i > 12: # 12월까지 검토가 끝나면
if min_s > s: # 최소비용 갱신
min_s = s
else:
f(i + 3, s + mon3, mon, mon3, year) # 3개월 단위 지불
f(i + 1, s + min(mon, arr[i] * day), mon, mon3, year) # 1개월 단위 지불
T = int(input())
for tc in range(1, T + 1):
day, mon, mon3, year = map(int, input().split()) # 이용권 가격
arr = [0] + list(map(int, input().split())) # 월별 이용일
min_s = year # 연간이용권 금액(최대)으로 초기화
f(1, 0, mon, mon3, year)
print(f'#{tc} {min_s}')
'swea' 카테고리의 다른 글
1486. 장훈이의 높은 선반 (0) | 2023.09.25 |
---|---|
1795. 인수의 생일 파티 (0) | 2023.09.25 |
2819. 격자판의 숫자 이어 붙이기 (0) | 2023.09.25 |
7465. 창용 마을 무리의 개수 (0) | 2023.09.25 |
1861. 정사각형 방 (0) | 2023.09.04 |