import sys
sys.stdin = open( "input.txt", "r")
def dfs(depth, idx):
global minValue
team1, team2 = 0, 0
if (depth == N//2):
for i in range(N):
for j in range(N):
if chk[i] == True and chk[j] == True:
team1 += graph[i][j]
elif not chk[i] and not chk[j]:
team2 += graph[i][j]
minValue = min( minValue, abs( team1 - team2 ) )
return
for i in range(idx, N):
if not ( chk[i] == True ):
chk[i] = True
dfs(depth + 1, i + 1 )
chk[i] = False
minValue = 100
N = int(input())
chk = [False for _ in range(N)]
graph = [list(map(int, input().split())) for _ in range(N)]
dfs(0, 0)
print(minValue)
'Algorithm' 카테고리의 다른 글
[BaekJoon] 백준 알고리즘 15686번 / 치킨 배달 / 백트래킹 / Python (0) | 2023.03.08 |
---|---|
[BaekJoon] 백준 알고리즘 1759번 / 암호 만들기 / 백트래킹(DFS) / Python (1) | 2023.03.07 |
[BaekJoon] 백준 알고리즘 1697번 / 숨바꼭질 / BFS / Python (0) | 2023.03.04 |
[BaekJoon] 백준 알고리즘 1260번 / DFS와 BFS / Python (0) | 2023.03.03 |
[BaekJoon] 백준 알고리즘 14503번 / 로봇 청소기 / 시뮬레이션 / Python (0) | 2023.03.02 |
댓글