
from itertools import combinations
N = int(input())
ability_board = []
for _ in range(N):
ability_board.append(list(map(int, input().split())))
num_list = [i for i in range(N)]
res = float('inf')
def solve():
global res
# 조합을 이용하여 각 후보자를 생성함
for cand in combinations(num_list, N // 2):
# 선택된 후보와 나머지
start_member = list(cand)
link_member = list(set(num_list) - set(cand))
# 점수 비교는 2명씩 이루어진다.
start_comb = list(combinations(start_member, 2))
link_comb = list(combinations(link_member, 2))
# 점수 구하기
start_sum = 0
for x, y in start_comb:
start_sum += (ability_board[x][y] + ability_board[y][x])
link_sum = 0
for x, y in link_comb:
link_sum += (ability_board[x][y] + ability_board[y][x])
# 차이를 구하는 것이므로 abs 사용
if(res > abs(start_sum - link_sum)):
res = abs(start_sum - link_sum)
solve()
print(res)
'# 코딩 문제 관련 > 파이썬' 카테고리의 다른 글
백준 11047번(python) (0) | 2020.01.03 |
---|---|
백준 12865번(python) (0) | 2020.01.02 |
백준 14888번(python) (0) | 2020.01.02 |
백준 2580번(python) (0) | 2020.01.01 |
백준 9963번(python) (0) | 2019.12.31 |