728x90
반응형
https://www.acmicpc.net/problem/11497
문제의 접근 방법
통나무의 높이를 크기 순서대로 정렬한 후, 가장 큰 통나무를 기준으로 양옆을 그 다음으로 큰 통나무로 채우는 형식으로 만들기 -> 가장 작은 높이차
* 가장 첫 통나무와 가장 마지막 통나무가 인접해있지 않다면 그냥 정렬만 해주어도 인접한 원소의 차이들을 최소로 만들어주지만 문제에서 가장 첫 통나무와 마지막 통나무가 인접해있다고 명시되어 있기 때문에 위처럼 정렬할 경우에는 첫 원소와 마지막 원소의 차이로 인해 최대 난이도를 가지는 배열이 된다.
내가 막혔던 부분
풀이 방법을 코드로 나타내기 -> 인덱스가 2씩 차이나도록 원소들을 비교하여 최소 난이도 구하기
문제 풀이 방법
테스트 케이스 T개 입력받기 -> T번만큼 반복문을 돌려서 통나무의 개수와 높이들을 입력받기 -> 통나무들의 높이를 입력받은 리스트 L을 정렬하기 -> 최소 난이도를 구하기 위해 변수 level 선언 후 n-2번만큼 반복문 돌리기 (이 때, 인덱스 값이 2씩 차이나도록 하여 두 원소들을 비교하기 때문에 전체 원소의 개수에서 2를 뺀 만큼만 비교하기 때문에 n-2번으로 범위 설정) -> 두 개의 원소를 비교하여 차이가 가장 큰 것을 max 함수로 뽑아내서 level에 저장 후 출력.
소스코드
T = int(input())
for i in range(T):
n = int(input())
L = list(map(int, input().split()))
L.sort()
level = 0
for j in range(n-2):
level = max(level, abs(L[j]-L[j+2]))
print(level)
728x90
반응형
'백준 write-up > 정렬 & 그리디' 카테고리의 다른 글
[백준] 아시아 정보올림피아드 : 2535번 - Python (0) | 2021.07.22 |
---|---|
[백준] 수 정렬하기 5 : 15688번 - Python (0) | 2021.07.21 |
[백준] 성적 통계 : 5800번 - Python (0) | 2021.07.20 |
[백준] 거북이 : 2959번 - Python (0) | 2021.07.19 |
[백준] 콘테스트 : 5576번 - Python (0) | 2021.07.19 |