[Boj문제풀이]

[Boj/백준] 11497 Python

ki7348 2021. 10. 4. 11:10

문제출처: https://www.acmicpc.net/problem/11497

 

11497번: 통나무 건너뛰기

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

www.acmicpc.net

 

1. 문제 접근 방식

리스트를 큰 순서로 소팅하고 max_num이라는 변수를 선언한다.

리스트의 0번과 1번,2번의 크기를 비교하고 max_num값을 바꿔준다.

나머지 리스트는 2칸씩 띄워가며 비교해준다.

ex) 13 10 12 11 10 11 12 인 경우

10 11 12 13 12 11 10 이 가장 차이가 적다고 생각했다.

즉 가장 높은 수를 가운데에 배치하고 양옆으로 그 다음으로 높은 수들을 배치

 

 

2. 내가 푼 코드

import sys

case = int(sys.stdin.readline())

for _ in range(case):
    num = int(sys.stdin.readline())
    arr = list(map(int,sys.stdin.readline().split()))

    sorted_arr = sorted(arr, reverse=True)

    max_num = 0

    if sorted_arr[0] - sorted_arr[1] > max_num:
        max_num = sorted_arr[0]-sorted_arr[1]
    if sorted_arr[0] - sorted_arr[2] > max_num:
        max_num = sorted_arr[0]-sorted_arr[2]
    for i in range(1,len(sorted_arr)-2):
        if sorted_arr[i] -sorted_arr[i+2] > max_num:
            max_num = sorted_arr[i] -sorted_arr[i+2]

    print(max_num)

 

 

3. 결과 및 느낀점

정렬 문제는 그리디와 자주 결합되는 것 같다. 감을 익히자.

'[Boj문제풀이]' 카테고리의 다른 글

[Boj/백준] 2075 Python  (0) 2021.10.04
[Boj/백준] 7983 Python  (0) 2021.10.04
[Boj/백준] 17129 Python  (0) 2021.09.30
[Boj/백준] 7576 Python  (0) 2021.09.29
[Boj/백준] 22352 Python  (0) 2021.09.28