-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathBaekJoon14889.py
40 lines (29 loc) · 908 Bytes
/
BaekJoon14889.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# BaekJoon14889.py
N = int(input())
arr = [[] for _ in range(N)]
for i in range(N):
arr[i] = list(map(int, input().split()))
combi = []
result = float('inf')
def calculate(team):
global arr, N, result
another_team = list(set([i for i in range(N)]) - set(team))
a_score = 0
b_score = 0
for i in range(N // 2):
for j in range(i + 1, N // 2):
a_score += arr[team[i]][team[j]]
a_score += arr[team[j]][team[i]]
b_score += arr[another_team[i]][another_team[j]]
b_score += arr[another_team[j]][another_team[i]]
result = min(result, abs(a_score - b_score))
def combination(chosen):
global N, arr
if len(chosen) == N // 2:
calculate(chosen)
return
last_chosen = chosen[-1] + 1 if chosen else 0
for i in range(last_chosen, N):
combination(chosen + [i])
combination([])
print(result)