Algorithm(CodeTree, Python)/Backtracking
[코드트리] 2n개 중에 n개의 숫자를 적절하게 고르기 Python
by kurooru
2023. 2. 2.
# n 입력
n = int(input())
# num_list
num_list = list(map(int, input().split()))
# 함수들
# calc(g_1, g_2)
def calc(g_1, g_2):
# sum_1, sum_2
sum_1, sum_2 = sum(g_1), sum(g_2)
# 반환
return abs(sum_1 - sum_2)
# simulate(curr_idx, cnt)
def simulate(curr_idx, cnt):
# 전역 변수 선언
global min_diff
# 종료조건
# 끝에 닿고
if curr_idx == 2*n:
# 원하는 만큼의 숫자를 썼으면
if cnt == n:
# min_diff update
min_diff = min(min_diff, calc(group_1, group_2))
return
# group_1에 넣을 경우
group_1.append(num_list[curr_idx])
simulate(curr_idx + 1, cnt + 1)
group_1.pop()
# group_1에 안넣을경우
group_2.append(num_list[curr_idx])
simulate(curr_idx + 1, cnt)
group_2.pop()
# 설계
# min_diff
import sys
min_diff = sys.maxsize
# group_1, group_2
group_1, group_2 = [], []
# simulate(curr_idx, cnt)
simulate(0, 0)
# 출력
print(min_diff)