로직
1. 조합으로 start팀 가능한 경우의 수를 모두 구한다음에 모든 경우에서 link팀도 구한다. 그래서 차이 비교하기
코드
from itertools import combinations
N = int(input())
board = [list(map(int, input().split())) for _ in range(N)]
# combination 함수로 만들기
people = [i for i in range(N)]
start = list(combinations(people, N//2)) # // : 나눗셈 후 몫 반환, / : 7/4=1.25
all_people = set(people)
mymin = 9999999999999999999999999999999999
for star in start:
link = list(all_people - set(star))
link_sum = 0
start_sum = 0
for i in range(N//2 - 1):
for j in range(i+1, N//2):
start_sum += board[star[i]][star[j]] + board[star[j]][star[i]]
link_sum += board[link[i]][link[j]] + board[link[j]][link[i]]
diff = abs(start_sum - link_sum)
if mymin > diff:
mymin = diff
print(mymin)
'알고리즘' 카테고리의 다른 글
[programmers] 다트 게임 (0) | 2020.08.31 |
---|---|
[baekjoon] 14888. 연산자 끼워넣기 (0) | 2020.08.19 |
[baekjoon] 13458. 시험감독 (0) | 2020.08.18 |
[baekjoon] 14500. 테트로미노 (0) | 2020.08.16 |
[baekjoon] 14502. 연구소 (0) | 2020.08.15 |