Post
1952. 수영장 (SWEA) | Gihun Son

1952. 수영장 (SWEA)

※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.

출처:

SW Expert Academy

나의 풀이

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.