문제출처: https://www.acmicpc.net/problem/11497
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 |