💡문제접근
- 단순히 정렬을 하는 문제가 아니었다.
- 가장 높은 통나무를 중앙에 배치하고 그 다음부터 양 옆으로 통나무를 배치하는 방식으로 수행해간다.
- 인접한 통나무 간의 높이를 비교해서 난이도를 찾고 가장 마지막으로 맨 앞에 있는 통나무와 맨 뒤에 있는 통나무 간의 높이를 비교해서 난이도를 계산한 다음 구하고자 하는 최소 난이도를 계산한다.
- 연결리스트의 개념을 이용했다.
💡코드(메모리 : 34128KB, 시간 : 268ms)
from collections import deque
import sys
input = sys.stdin.readline
T = int(input().strip())
for i in range(T):
N = int(input().strip())
level = -100000000
arr_left = deque()
arr_right = []
arr = sorted(list(map(int, input().strip().split())))
arr_max = arr.pop()
for i in range(1, len(arr)+1):
temp = arr.pop()
if i % 2 != 0:
arr_right.append(temp)
else:
arr_left.appendleft(temp)
arr_left.append(arr_max)
arr_left.extend(arr_right)
for i in range(len(arr_left) - 1):
if abs(arr_left[i] - arr_left[i+1]) > level:
level = abs(arr_left[i] - arr_left[i+1])
if level < abs(arr_left[0] - arr_left[-1]):
level = abs(arr_left[0] - arr_left[1])
print(level)
💡소요시간 : 17m