알고리즘
[HackerRank] Closest Numbers
haesa_s
2021. 11. 5. 18:03
# Closest Numbers (Sorting)
[문제]
[코드]
vector<int> closestNumbers(vector<int> arr) {
set<int> sort;
for(int i=0; i<arr.size(); i++)
sort.insert(arr[i]);
map<int, vector<int>> diffMap;
auto iter = sort.begin();
int prev = *iter++;
for(; iter != sort.end(); iter++)
{
int diff = *iter - prev;
diffMap[diff].push_back(prev);
diffMap[diff].push_back(*iter);
prev = *iter;
}
return diffMap.begin()->second;
}
[코드설명]
두 수의 차가 제일 작은 수들을 정렬하는 문제다. (중복 허용)
먼저 set자료구조 sort를 만들고, arr배열의 값을 insert해서 정렬했다.
set자료구조 sort에서 현재 값이랑 prev 값을 빼고, 두 수의 차를 map의 key로 사용해서 동일한 차를 갖는 값들을 같은 key의 배열로 넣어줬다.
map자료구조는 key를 기준으로 오름차순 정렬되므로 diffMap. begin()에서 배열을 반환했다.
[채점 결과]