-
[백준] 14889 - 스타트와 링크Algorithm 문제 2019. 7. 17. 01:26
https://www.acmicpc.net/problem/14889
brute-force 문제
재귀 함수를 이용하여 풀었다. pypy2를 이용하여 컴파일.
python3 등을 사용하였으면 시간초과가 발생했을 것 같다.
<Python 코드>
12345678910111213141516171819202122232425262728293031323334353637383940414243import sysdiff_min = float("INF")def make_team(n, stat, depth, team1_arr):if sum(team1_arr) == n//2:st_1, st_2 = 0, 0t1, t2 = [], []for idx, team1 in enumerate(team1_arr):if team1 == 1:t1.append(idx)else:t2.append(idx)for idx, m1 in enumerate(t1):for m2 in t1[idx+1:]:st_1 += stat[m1][m2] + stat[m2][m1]for idx, m1 in enumerate(t2):for m2 in t2[idx+1:]:st_2 += stat[m1][m2] + stat[m2][m1]global diff_mindiff_min = min(abs(st_1-st_2), diff_min)returnif depth == n:returnteam1_arr[depth] = 1make_team(n, stat, depth+1, team1_arr)team1_arr[depth] = 0make_team(n, stat, depth+1, team1_arr)returnlines = sys.stdin.readlines()n = int(lines[0])stat = []for line in lines[1:]:stat.append(list(map(int, line.split())))team1_arr = [0 for _ in range(n)]make_team(n, stat, 0, team1_arr)sys.stdout.write(str(diff_min))cs 'Algorithm 문제' 카테고리의 다른 글
[백준] 16234 - 인구 이동 (0) 2019.07.23 [백준] 15683 - 감시 (0) 2019.07.22 [백준] 14500 - 테트로미노 (0) 2019.07.15 [백준] 13460 - 구슬 탈출 2 (0) 2019.07.13 [백준] 14888 - 연산자 끼워넣기 (0) 2019.07.12