[ BOJ / Python ] 11497번 통나무 건너뛰기

xx0hn·2021년 11월 24일
0

Python

목록 보기
33/40

이번 문제는 가운데에 작은 수가 몰리도록 정렬하여 해결하였다.

  • 테스트 케이스 갯수 t를 입력받는다.
  • 테스트 케이스의 원소 갯수 n을 입력받는다.
  • 배열 l을 입력받는다.
  • 빈 배열 arr을 선언한다.
  • result를 0으로 정의한다.
  • l을 오름차순 정렬한다.
  • l의 길이가 0이 될때까지 while문을 반복한다.
    -> l[0] (가장 작은 수)을 arr의 인덱스 0자리에 넣어준다.
    -> 배열 l에서 l[0]을 제거한다.
    -> 만약 l의 길이가 0이 되었다면 while문을 탈출한다.
    -> ㅣ[0] (가장 작은 수)을 arr의 가장 뒤에 넣어준다.
    -> 배열 l에서 l[0]을 제거한다.
  • 1부터 n까지 j에 대한 for문을 반복한다.
    -> result를 arr[j]-arr[j-1]의 절댓값과 비교하며 가장 큰 값으로 갱신한다.
  • result를 출력한다.

Code

t=int(input())
for i in range(t):
    result=0
    n=int(input())
    l=list(map(int, input().split()))
    l.sort()
    arr=[]
    while len(l)>0:
        arr.insert(0, l[0])
        l.pop(0)
        if len(l)==0:
            break
        arr.append(l[0])
        l.pop(0)
    for i in range(1,n):
        result=max(result, abs(arr[i]-arr[i-1]))
    print(result)

profile
개발 일기

0개의 댓글