boj 11497

📍 Idea Logic
- 원형으로 이루어지기 때문에 리스트의 양쪽 끝부터 차례대로 가장 작은 수부터 채운다.
- 가장 작은 수를 인덱스의 첫 번째, 2번째 작은 수를 인덱스의 가장 끝, 3번째 작은 수를 인덱스의 두 번째... 이 순서로 넣는다.
- 인덱스 간의 차이를 비교해가며 max value를 찾아 print 한다.
❗️ ERROR Point
for j in range(1,n,-2):
arr.append(l[i])
- 1부터 n까지의 인덱스를 2 간격인 값의 역순을 arr 리스트에 넣고 싶었으나, 이는 실행되지 않는 코드이다.
📌 New Arrival
1. 절대값 함수 - abs()
- 파이썬 내장 함수
- 음수를 넣어도 양수로 return
2. python & stack
- 파이썬의 리스트는 기본적으로 스택 형태 (LIFO)
- pop()은 리스트의 가장 오른쪽에 있는 요소 반환
- stack의 원소가 다 없어질 때까지 pop() 실행
while stack이름:
stack이름.pop()
🔑 Solution
import sys
t = int(sys.stdin.readline())
for _ in range(t):
n = int(sys.stdin.readline())
l = list(map(int, sys.stdin.readline().split()))
l.sort()
arr = []
tmp = []
for i in range(0,n,2):
arr.append(l[i])
for j in range(1,n,2):
tmp.append(l[j])
while tmp:
arr.append(tmp.pop())
max_val = 0
for z in range(n-1):
max_val = max(max_val, abs(arr[z]-arr[z+1]))
print(max_val)