[백준] 11497번

그녕·2023년 1월 31일
0

백준 11497번 통나무 건너뛰기

  1. 시도
    처음에 시도는 sorting을 해줘서 가장 작은 수를 가장 중간에 두고 차이가 작은 애들을 양옆에 두는 방법으로 풀려고 했으나 코드 상으로 못 풀겠어서 풀이를 보았다.

  2. 풀이
    내림차순으로 리스트를 정렬해주면
    [9 7 5 4 2]가 되고
    9랑 차이가 젤 적은 애는 7,5 이므로 얘네가 9 양 옆에 올 것이다.
    그 다음 7 기준에서는 차이가 젤 적은 애는 5,4가 될거고 7 옆에는 5나 4가 올것이다.
    이런식으로 쭉 하게 되면 결국
    내림차순으로 정렬되어 있기 때문에 당연히 Ln - L(n+2) > Ln - L(n+1)이 성립한다.
    이때, 난이도는 인접한 원소끼리의 높이차의 최댓값에 따라 결정되기 때문에 위 공식에 근거하여 최댓값을 갱신해주면 된다.
    그래서 result= max(result, data[i]-data[i+2]) 나오게 된다.

import sys
a= int(input())
for _ in range(a):
    b = int(input())
    input = sys.stdin.readline
    data = list(map(int,input().split()))
    data.sort(reverse= True)
    result=0
    for i in range(b-2):
        result= max(result, data[i]-data[i+2])
    print(result)

0개의 댓글