Algorithm(CodeTree, Python)/완전탐색3
[코드트리 상황을 일일이 가정해보고 진행하는 완전탐색] 숫자 2배 후 하나 제거하기 Python
by kurooru
2022. 12. 27.
# n 입력
n = int(input())
# num_list
num_list = list(map(int, input().split()))
# 함수들
# calc_2(doubled_nums, k)
def calc_2(doubled_nums, k):
# temp_nums
temp_nums = []
for i in range(n):
# 제외할 인덱스일 경우
if i == k:
# skip
continue
# 이외에는
else:
# temp_nums에 추가
temp_nums.append(doubled_nums[i])
# curr_diff
curr_diff = 0
for i in range(n-2):
curr_diff += abs(temp_nums[i] - temp_nums[i+1])
# 반환
return curr_diff
# calc(k)
def calc(k):
# temp_nums -> num_list 복사
temp_nums = num_list[:]
# 선택된 인덱스(k)를 두배 해주기
temp_nums[k] *= 2
# curr_min_diff
curr_min_diff = sys.maxsize
for i in range(n):
# curr_min_diff update
curr_min_diff = min(curr_min_diff, calc_2(temp_nums, i))
# 반환
return curr_min_diff
# 설계
# min_diff
import sys
min_diff = sys.maxsize
# 두배 해줄 인덱스 완전탐색
for i in range(n):
# min_diff update
min_diff = min(min_diff, calc(i))
# 출력
print(min_diff)