article thumbnail image
Published 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()에서 배열을 반환했다.

 

[채점 결과]

 

 

 

 

 

'알고리즘' 카테고리의 다른 글

[HackerRank] Sherlock and Array  (0) 2021.11.21
[HackerRank] Plus Minus  (0) 2021.11.05
[HackerRank] Find the Median  (0) 2021.10.08
[HackerRank] Diagonal Difference  (0) 2021.10.08
[HackerRank] A Very Big Sum  (0) 2021.09.29
복사했습니다!