혜랑's STORY

[HackerRank] Closet Numbers 본문

2021 SISS 21기 활동/2학기 C

[HackerRank] Closet Numbers

hyerang0125 2021. 9. 24. 17:08
3주차 자유 문제
Prepare > Algorithms > Sorting

풀이

두 숫자의 차이가  가장 작은 수를 찾는 것이 문제이다. 먼저 숫자가 들어있는 arr을 정렬하고, 양 옆의 숫자들과의 차가 가장 작은 것을 저장해 둔다. 그 다음 두 번째 for문을 통해 가장 적은 차를 만드는 숫자를 찾아 result에 저장한다.

전체적 코드는 다음과 같다.

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

 

테스트 케이스도 모두 통과하였다.

'2021 SISS 21기 활동 > 2학기 C' 카테고리의 다른 글

[HackerRank] Combo Meal  (0) 2021.10.01
[HackerRank] Electronics Shop  (0) 2021.10.01
[HackerRank] Equal Stacks  (0) 2021.09.24
[HackerRank] Jim and the Orders  (0) 2021.09.17
[HackerRank] Permuting Two Arrays  (0) 2021.09.17