https://www.acmicpc.net/problem/14889
이 문제는 0*n//2 와 1*n//2 로 이루어진 n 길이의 순열을 만들어서 이중포문에 넣으면 되는 간단한 문제이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | def next_perm(a): i = len(a)-1 while i > 0 and a[i-1] >= a[i]: i -= 1 if i <= 0: return False j = len(a)-1 while a[i-1] >= a[j]: j -= 1 a[i-1], a[j] = a[j], a[i-1] j = len(a)-1 while i < j: a[i], a[j] = a[j], a[i] i += 1 j -= 1 return True def cal_score(a, start, link): start_score = link_score = 0 for i in range(n): for j in range(n): if i == j: continue if a[i] == start: if a[i] == a[j]: start_score += stat[i][j] elif a[i] == link: if a[i] == a[j]: link_score += stat[i][j] return start_score, link_score n = int(input()) stat = [list(map(int, input().split())) for _ in range(n)] lst = [0]*(n//2)+[1]*(n//2) answer = 9876543210 while True: team_start, team_link = cal_score(lst, 0, 1) answer = min(abs(team_start-team_link), answer) if not next_perm(lst): break print(answer) | cs |
728x90
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[Python]12100. 2048 (Easy) (0) | 2019.05.08 |
---|---|
[Python]1248. 맞춰봐 (0) | 2019.04.22 |
[Python]17143. 낚시왕 (0) | 2019.04.18 |
[Python]2529. 부등호 (0) | 2019.04.16 |
[Python]17127. 벚꽃이 정보섬에 피어난 이유 (0) | 2019.04.14 |
댓글