알고리즘/백준

[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[-- 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)
 
반응형

'알고리즘 > 백준' 카테고리의 다른 글

[python/1003]피보나치 함수  (0) 2020.04.07
[python/2748]피보나치 수2  (0) 2020.04.02
[python/14888]연산자 끼워넣기  (0) 2020.03.28
[python/10996]별 찍기 - 21  (0) 2020.03.23
[python/2446]별 찍기 - 9  (0) 2020.03.21