관리 메뉴

Hyunwoo's DATA

boj-14889 스타트와 링크 본문

알고리즘/백준

boj-14889 스타트와 링크

꿈꾸는 데이터분석가 2021. 9. 23. 15:50

https://www.acmicpc.net/problem/14889

from itertools import combinations

N=int(input())
S=[list(map(int,input().split())) for i in range(N)]

members=[i for i in range(N)]
possible_team=[]

for team in combinations(members,N//2):
    possible_team.append(team)

min_gap=10000


# //2해서 절반만큼 돌리는 이유는 (1,3)과 (2,4)로 나오는 값은 같고 모든 경우가 2번 반복.
for i in range(len(possible_team)//2):
    team=possible_team[i]
    stat_A=0
    for j in range(N//2):
        member=team[j]
        for k in team:
            stat_A+=S[member][k]
    team=possible_team[-i-1]
    stat_B=0
    for j in range(N//2):
        member=team[j]
        for k in team:
            stat_B+=S[member][k]
    min_gap=min(min_gap,abs(stat_A-stat_B))

print(min_gap)

combinations 조합함수를 사용하여 간단하게 풀수 있는 문제였다.

조합으로 만들어진 possible_team에서

p_team[i]와 p_team[-i-1]은 대칭을 이룬다는 특징을 이용해 값을 추출하여 비교하면 된다.

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

boj -14225 부분수열의 합  (0) 2021.09.25
boj- 1339 단어수학  (0) 2021.09.25
boj-14501 퇴사  (0) 2021.09.23
boj-10971 외판원 순회2  (0) 2021.09.21
boj-10819 차이를 최대로  (0) 2021.09.21