기타/코딩테스트

[Python] 백준 11497번 - 통나무 건너띄기

lazy man 2023. 4. 20. 19:43

1. 문제정보

https://www.acmicpc.net/problem/11497

 

11497번: 통나무 건너뛰기

남규는 통나무를 세워 놓고 건너뛰기를 좋아한다. 그래서 N개의 통나무를 원형으로 세워 놓고 뛰어놀려고 한다. 남규는 원형으로 인접한 옆 통나무로 건너뛰는데, 이때 각 인접한 통나무의 높이

www.acmicpc.net

 

 

2. 해결전략

단순히 정렬로만 해결할 수 없는 게 시작점과 끝점이 이어지면서 가장 작은 값과 가장 큰 값으로 인해 최대 레벨로 계산되기 때문이다. 시작점과 끝점의 차이를 줄이는 것이 최선의 전략으로 판단했고 정렬된 값을 하나는 좌측부터, 하나는 우측부터 채워나가면서 새로운 리스트를 만들어서 해결했다.

 

 

3. 코드

t = int(input())

for _ in range(t):
    n = int(input())
    heights = list(map(int, input().split()))
    heights.sort()

    arr = [0]*n

    # 투 포인터
    start = 0
    end = n-1
    for i in range(0, n):
        if i % 2 == 0:
            arr[start] = heights[i]
            start += 1
        else:
            arr[end] = heights[i]
            end -= 1
    
    result = 0
    for i in range(1, n):
        result = max(result, abs(arr[i]-arr[i-1]))
    print(result)