알고리즘/백준
[python/14889]스타트와 링크
(ㅇㅅㅎ)
2020. 3. 31. 20:39
728x90
반응형
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
더보기

내 코드
from itertools import combinations
def solv(N, S, team):
# 가장 작은 값 저장 및 비교 변수
min_tmp = 99999
for i in range(len(team) // 2):
# start 팀
team_start = team[i]
start_sum = 0
# link 팀
team_link = team[-i - 1]
link_sum = 0
for j in range(N // 2):
member_s = team_start[j]
member_l = team_link[j]
# start 팀
for k in team_start:
start_sum += S[member_s][k]
# link 팀
for k in team_link:
link_sum += S[member_l][k]
# 최솟값 찾기
min_tmp = min(min_tmp, abs(start_sum - link_sum))
return min_tmp
if __name__=='__main__':
N = int(input())
S = [list(map(int, input().split())) for _ in range(N)]
members = [i for i in range(N)]
team = []
# 조합으로 가능한 팀 생성
for x in list(combinations(members, N // 2)):
team.append(x)
answer = solv(N, S, team)
print(answer)
|

반응형