[백준 11497] 통나무 건너뛰기.py

문제 이해하기

⦁ 양 옆의 수와 차이값을 최대한 적게 만들기

핵심

⦁ 큰 값을 가운데에 놓고 그 다음 큰 값을 옆에 두기

소스코드

test = int(input())
for _ in range(test):
    n = int(input())
    num = list(map(int, input().split()))
    num.sort()
    result = 0
    for i in range(2, n):
        result = max(result, abs(num[i] - num[i-2]))
    print(result)

처음에는 큰 수를 가운데에 놓는 거 부터 차례대로 배열을 완성한 다음에 차이값을 구했다. 스멀스멀 불길한 기운이 일었지만... 역시 런타임 에러가 났다.😭😭
머리를 싸매고...
해답을 찾았다.
[1, 3, 5, 8, 10]이라 했을 경우 위에 핵심에서 말한 부분과 같이 정리하면 [1, 5, 10, 8, 3] 으로 된다.
차이값은 |1-5|, |5-10|, |10-8|, |8-3|이 된다.
이는 원래 리스트에서 두 칸씩 뛰어 차이값을 계산한 것과 같다.

🎈집중해서 생각하자!!!!!!

좋은 웹페이지 즐겨찾기