[HackerRank/C++] Closest Numbers

2023. 3. 14. 09:52코딩테스트 해커랭크/Algorithms -Easy

배열 arr가 주어질때, 정렬된 arr에서 두 수의 차이가 최소인 집합을 모두 vector에 저장해 return 한다

vector<int> closestNumbers(vector<int> arr)
{
    vector<int> result;
    
    sort(arr.begin(), arr.end());
    
    int diff = INT_MAX;
    
    for (size_t i = 1; i < arr.size(); ++i)
    {
        if (diff > arr[i] - arr[i - 1])
        {
            diff = arr[i] - arr[i - 1];
            result.clear();
            result.push_back(arr[i - 1]);
            result.push_back(arr[i]);
        }
        else if (diff == arr[i] - arr[i - 1])
        {
            result.push_back(arr[i - 1]);
            result.push_back(arr[i]);
        }
    }
    
    return result;
}

 

arr를 sort함수로 정렬한다

 

최솟값을 저장할 diff를 INT_MAX로 초기화 한 후 arr를 순회하며 두 수를 비교한다

 

더 작은 값을 찾는다면 result에 저장했던 값을 clear로 밀어버리고 두 수를 push back 한다

 

만약 차이값이 같다면 두 수를 push back하고 반복문이 끝나면 result를 return 한다