ALGORITHM STUDY WITH PYTHON/Bruteforce
boj.kr/14889 스타트와 링크 (silver2) 파이썬 풀이
ebson
2023. 4. 20. 17:34
1. combinations를 import하여 가능한 모든 조합에 대해 아래를 반복
1.1. startT과 linkT 리스트를 초기화
1.2. start_tot 과 link_tot을 저장
1.3. diff_list에 두 점수의 차를 저장
2. diff_list의 최소값을 출력
N = int(input())
board = [list(map(int, input().split())) for _ in range(N)]
nums = []
for n in range(N):
nums.append(n)
from itertools import combinations
from itertools import permutations
diff_list = []
for combi in combinations(nums, N//2):
start_tot = 0
link_tot = 0
startT = list(combi[:])
linkT = [x for x in nums if x not in startT]
for permu in permutations(startT, 2):
start_tot += board[permu[0]][permu[1]]
for permu in permutations(linkT, 2):
link_tot += board[permu[0]][permu[1]]
diff_list.append(abs(start_tot-link_tot))
print(min(diff_list))
서브리스트2 = [x for x in 메인리스트 if x not in 서브리스트1]와 같이 하여 메인리스트를 2개의 서브리스트로 분리할 수 있다.