728x90
[백준알고리즘] 14889번: 스타트와 링크 -Python
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
브루트 포스방식으로 문제를 풀었다.
N//2명의 인원씩 A, B팀으로 나누어주었다. 이때 모든 팀원 배치를 하기 위해서 itertools의 combinations를 사용했다.
구한 팀 배치마다 각 팀원들의 모든 팀 능력치를 합해주기 위해서 이중 for문을 돌렸다.
from sys import maxsize
from itertools import combinations
n = int(input())
s = [list(map(int, input().split())) for _ in range(n)]
cb = combinations(range(n), n//2)
ans = maxsize
for c in cb:
a = set(c)
b = list(set(range(n)) - a)
a = list(a)
a_teamwork, b_teamwork = 0, 0
for i in range(n//2 - 1):
for j in range(i + 1, n//2):
a_teamwork += s[a[i]][a[j]] + s[a[j]][a[i]]
b_teamwork += s[b[i]][b[j]] + s[b[j]][b[i]]
ans = min(ans, abs(b_teamwork - a_teamwork))
print(ans)
잘못된 점이나 부족한 점 지적해주시면 감사하겠습니다
728x90
'algorithm > 백준알고리즘' 카테고리의 다른 글
[백준알고리즘] 2661번: 좋은수열 -Python (0) | 2020.04.04 |
---|---|
[백준알고리즘] 15686번: 치킨 배달 -Python (0) | 2020.04.03 |
[백준알고리즘] 14502번: 연구소 -Python (0) | 2020.04.02 |
[백준알고리즘] 14501번: 퇴사 -Python (0) | 2020.04.02 |
[백준알고리즘] 2309번: 일곱 난쟁이 -Python (0) | 2020.04.02 |