728x90
범위가 작아 조합으로 풀었다. check 함수 내의 반복문에서 실수가 있어서 시간이 좀 걸렸다.
import sys
from itertools import combinations
import math
def check(k,list):
answer = 0
for i in range(0,len(list)-1):
for j in range(i+1,len(list)):
answer += k[list[i]][list[j]]
answer += k[list[j]][list[i]]
return answer
num =int(input())
k = [ ]
for i in range(num):
k.append(list(map(int,sys.stdin.readline().rstrip().split(" "))))
member = [ ]
for i in range(num):
member.append(i)
all_sum = 0
for i in range(0,len(k)):
all_sum += sum(k[i])
# 팀 나누기
first = list(combinations(member,int(num/2)))
answer = [ ]
for i in range(0,len(first)):
temp = list(first[i])
temp2 = [ ]
for q in member:
if q not in temp:
temp2.append(q)
temp_sum = check(k,temp)
temp_sum2 = check(k,temp2)
answer.append(int(math.fabs(temp_sum-temp_sum2)))
print(min(answer))
728x90
'🟢 알고리즘 문제 풀이 > Baekjoon' 카테고리의 다른 글
| [파이썬] 백준 2178 미로 탐색 (0) | 2023.07.04 |
|---|---|
| [파이썬] 백준 2667 단지번호붙이기 (0) | 2023.06.29 |
| [파이썬] 백준 2529 부등호 (0) | 2023.06.20 |
| [파이썬] 백준 1759 암호 만들기 (0) | 2023.06.19 |
| [파이썬] 백준 14501 퇴사 (0) | 2023.06.19 |