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
더보기
![](https://blog.kakaocdn.net/dn/N4jMO/btqC48AYN84/c7nUitCJloAcNOnE7M5EIK/img.png)
내 코드
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)
|
![](https://blog.kakaocdn.net/dn/N4jMO/btqC48AYN84/c7nUitCJloAcNOnE7M5EIK/img.png)
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[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 |