1952. 수영장 (SWEA)
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
출처:
나의 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
def dfs(month,cost):
global min_cost
if month>11:
min_cost=min(min_cost,cost)
return
for i in range(3):
if i==0:
dfs(month+1,cost+cost_list[i]*plan[month])
elif i==1:
dfs(month+1,cost+cost_list[i])
elif i==2:
end_month=min(11,month+2)
dfs(month+3,cost+cost_list[i])
T = int(input())
for test_case in range(1, T + 1):
cost_list=list(map(int,input().split()))
plan=list(map(int,input().split()))
min_cost=cost_list[-1]
visited=[False]*12
dfs(0,0)
print(f'#{test_case} {min_cost}')
- dfs로 구현했다.
- 하루, 한달, 3달 3가지 경우에 대해 탐색한다.
- 1년의 경우 한가지 경우 밖에 존재하지 않기 때문에, 초기 min값으로 설정한다.
- 주의할 점은 하루씩 할 때에는 plan의 계획의 일수만큼 가격을 곱해주고, 한달씩 할 때에는 1을 곱해주고, 3달씩 할 때에도 1을 곱해주지만 다음 month는 +3을 해준다.
This post is licensed under CC BY 4.0 by the author.