문제
https://www.acmicpc.net/problem/14889
14889번: 스타트와 링크
예제 2의 경우에 (1, 3, 6), (2, 4, 5)로 팀을 나누면 되고, 예제 3의 경우에는 (1, 2, 4, 5), (3, 6, 7, 8)로 팀을 나누면 된다.
www.acmicpc.net
코드
import sys
from itertools import combinations
n=int(input())
array=[list(map(int, input().split())) for _ in range(n)]
com=list(combinations(range(n),n//2))
result=sys.maxsize
for start in com:
# 조합으로 start팀을 구한후, 차집합을 통해 link팀 구함
link=set(range(n)).difference(set(start))
teamStart=0
teamLink=0
for a,b in list(combinations(start,2)):
teamStart+=array[a][b]
teamStart+=array[b][a]
for a,b in list(combinations(link,2)):
teamLink+=array[a][b]
teamLink+=array[b][a]
result=min(result,abs(teamStart-teamLink))
print(result)
'문제풀이 > 구현' 카테고리의 다른 글
@ [파이썬] [구현] 백준 21608 상어 초등학교 (0) | 2023.03.20 |
---|---|
● [파이썬] [구현] 백준 14891 톱니바퀴 (0) | 2023.03.18 |
[파이썬] [구현] 백준 2531 회전 초밥 (0) | 2023.03.03 |
[파이썬] [구현] 백준 2932 표 회전 (0) | 2023.01.28 |
[파이썬] [구현] 백준 16234 인구 이동 (0) | 2023.01.20 |