본문 바로가기

Algorithm/Sorting

(C++) - 백준(BOJ) 11497번 : 통나무 건너뛰기

반응형

www.acmicpc.net/problem/11497

 

11497번: 통나무 건너뛰기

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

www.acmicpc.net

정렬문제였습니다.

 

풀이방법

 인접한 높이 차이가 최소가 되려면 가장 높이가 높은 통나무 양 옆으로 작은 통나무가 배치되어야 합니다. 또한 이를 직접 배치하지 않고서 알 수 있는 방법은 정렬 후 한 칸 더 건너뛰어 2칸 떨어진 통나무끼리의 높이 차이들 중 최대를 구하면 이는 곳 난이도가 됩니다.

 

Code

#include <bits/stdc++.h>
using namespace std;
int t;
int main(){
    cin >> t;
    while(t--){
        int n,ans=0;
        cin >> n;
        vector <int> v(n);
        for(int i = 0; i < n; i++) cin >> v[i];
        sort(v.begin(),v.end());
        for(int i = 0; i < v.size()-2; i++){
            ans = max(ans,abs(v[i]-v[i+2]));
        }
        cout << ans << '\n';
    }
}