평범한 DFS로 col_check해주면서 진행. 여기서 더 발전되면 비숍, 룩, 퀸 배치문제로 넘어간다.
def DFS(row,sum_nums):
global min_sum
if row == N:
min_sum = min(min_sum,sum_nums)
return
if sum_nums > min_sum:
return
for i in range(N):
if not col_check[i]:
col_check[i] = True
DFS(row+1,sum_nums+matrix[row][i])
col_check[i] = False
for test in range(1,int(input())+1):
N = int(input())
matrix = [list(map(int,input().split())) for _ in range(N)]
min_sum = float('inf')
col_check = [False] * N
DFS(0,0)
print(f'#{test} {min_sum}')
'practivceAlgorithm > swexpertacademy' 카테고리의 다른 글
[SWEA][Python] 4875 미로 (0) | 2021.08.20 |
---|---|
[SWEA][Python] 4880 토너먼트 카드 게임 (0) | 2021.08.20 |
[SWEA][Python] 5105 미로의 거리 (0) | 2021.08.20 |
[SWEA][Python] 5099 피자 굽기 (0) | 2021.08.20 |
[SWEA][Python] 5102 노드의 거리 (0) | 2021.08.20 |