구현1
T = int(input())
for _ in range(T):
N = int(input())
L = list(map(int,input().split()))
#정렬
L.sort()
level = 0
for i in range(2,N):
level = max(level, abs(L[i] - L[i-2]))
print(level)
- 이 방식은 대부분의 사람들이 이렇게 풀이했다.
- L = 2 4 5 7 9 ▶2 5 9 7 4 이렇게 변환된 것에서 인접한 값을 구하는 것은
- abs(L[2] - L[0]) = abs(2 - 5)
- abs(L[3] - L[1]) = abs(4 - 7)
- abs(L[4] - L[2]) = abs(5 - 9)
- 이와 같은 방식이기 때문에 새롭게 리스트를 구성하여 인접한 값을 구하는 것과 같게 된다.
구현2
## 리스트 배치하는 방식
T = int(input())
for _ in range(T):
N = int(input())
L = list(map(int,input().split()))
#정렬
L.sort()
#배치
new_list = L[::2]
new_list2 = L[1::2][::-1]
new = new_list + new_list2
# 인접 크기 계산
result = new[0] - new[-1]
for i in range(1,N):
result = max(result , abs(new[i] - new[i-1]))
print(result)
- 문제의 해결 방법을 알아내고 이 코드를 가장 먼저 떠올리고 구현했다.
- 문제 해결 방법 그대로 새로운 리스트를 만들고, 그 리스트에서 인접한 크기를 구해서 가장 큰 값을 추출하는 방식이다.
'알고리즘 > 백준' 카테고리의 다른 글
백준-20546-기적의 매매법 (0) | 2024.07.12 |
---|---|
백준-2839-설탕 배달 (1) | 2024.07.03 |
백준-14502-연구소 (1) | 2024.07.01 |
백준-14248-점프 점프 (0) | 2024.06.25 |
백준-1541-잃어버린 괄호 (0) | 2024.06.18 |