[BOJ] 스타트와 링크

Minsu Han·2022년 11월 8일
0

알고리즘연습

목록 보기
52/105

코드

import sys
from itertools import combinations
input = sys.stdin.readline

n = int(input())
l = list(range(0, n))
s = [list(map(int, input().split())) for _ in range(n)]

teams = list(combinations(l, n//2))
ans = 100*n*n

for team in teams:
    t1 = 0
    t2 = 0
    for i in team:
        for j in team:
            t1 += s[i][j]
    team2 = [x for x in range(n) if x not in team] 
    for i in team2:
        for j in team2:
            t2 += s[i][j]

    if ans > abs(t1-t2):
        ans = abs(t1-t2)

print(ans)

결과

image


풀이 방법

  • 조합을 사용하여 팀을 나누고 각 팀의 능력치 합 차이를 비교하였다.
  • 조합을 쉽게 구해주는 파이썬의 itertools.combinations 라이브러리와 A팀을 제외한 다른 팀(B팀)을 구하기 위해 not in 문을 활용한 코드이다.

profile
기록하기

0개의 댓글