1seul357
[SWEA] 장훈이의 높은 선반 본문
def dfs(now, ans):
global min_height
if ans >= B: # 키가 B이상이고,
if min_height > ans: # 최소키보다 ans가 작으면
min_height = ans # 갱신
return
if now > min_height: # 가지치기. 가망 없으면 리턴
return
for i in range(now, N):
if visited[i] == 0: # 중복체크. 아직 안쓴 키면 탐색하기
visited[i] = 1
dfs(i, ans + Height[i])
visited[i] = 0
T = int(input())
for TC in range(T):
N, B = map(int, input().split())
Height = list(map(int, input().split()))
visited = [0]*N
min_height = 999999
dfs(0, 0)
print('#{} {}'.format(TC+1, min_height-B))
'알고리즘 > SWEA' 카테고리의 다른 글
[SWEA] N Castle (0) | 2021.11.28 |
---|---|
[SWEA] 격자판의 숫자 이어붙이기 (0) | 2021.11.28 |
[SWEA] 정사각형 방 (0) | 2021.11.28 |
[SWEA] 그룹 나누기 (0) | 2021.11.28 |
[SWEA] 이진 탐색 (0) | 2021.11.28 |