ebson

boj.kr/14889 스타트와 링크 (silver2) 파이썬 풀이 본문

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개의 서브리스트로 분리할 수 있다.

 

Comments