반응형
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
10000개 데이터로 10개 테스트 1초이므로 DFS는 절대 아닐거라고 생각.
그리디하게 풀려고 하는데 아이디어가 안떠올랐다..
정답 코드를 참조하니까 정렬후 가장 작은 수를 중간에 넣고 앞 뒤로 그보다 큰 수들을 차례로 배치하는 경우가
각 차이가 가장 최소가 되는 경우.
이렇게 정렬된 deque에서 최대값을 구하는 것이
배치중 최대값의 최소가된다.
#include<iostream>
#include<deque>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
int N;
deque<int> de;
vector<int> vec;
int main(int argc, char** argv)
{
int test_case;
int T;
cin >> T;
/*
여러 개의 테스트 케이스가 주어지므로, 각각을 처리합니다.
*/
for (test_case = 1; test_case <= T; ++test_case)
{
cin >> N;
de.clear();
vec.clear();
for (int i = 0; i < N; i++)
{
int a;
cin >> a;
vec.push_back(a);
}
sort(vec.begin(), vec.end());
for (int i = 0; i < vec.size(); i++)
{
if (i == 0)
{
de.push_back(vec[i]);
}
else
{
if (i % 2)
{
de.push_front(vec[i]);
}
else
{
de.push_back(vec[i]);
}
}
}
int result = 0;
for (int i = 0; i < de.size(); i++)
{
if(i == de.size() -1)
{
int m = abs(de[de.size() - 1] - de[0]);
if(result < m)
{
result = m;
}
}
else
{
int m = abs(de[i] - de[i+1]);
if(result < m)
{
result = m;
}
}
}
cout << "#" << test_case << " " << result << endl;
}
return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
반응형
'Algorithm' 카테고리의 다른 글
백준 1600번 말이 되고픈 원숭이 (0) | 2020.06.01 |
---|---|
백준 2468번 안전영역 (0) | 2020.05.30 |
6782. 현주가 좋아하는 제곱근 놀이 (0) | 2020.05.28 |
삼성이의 쇼핑 (0) | 2020.05.28 |
2018 KAKAO BLIND RECRUITMENT[1차] 뉴스 클러스터링 (0) | 2020.05.08 |