제일 작은 수 제거하기

문제 링크

제일 작은 수 제거하기

분석

배열에서 가장 작은 수를 제외하고 반환하는 문제입니다.

반복문으로 배열에서 가장 작은 수를 확인하고 해당 인덱스를 포함하지 않은 배열을 새로 만들어서 반환하는 방법이 있습니다.
알고리즘 헤더의 함수를 사용해 배열에서 가장 작은 수를 확인하고 해당 인덱스를 제거해 반환하는 방법이 있습니다.

풀이

반복문으로 가장 작은 수를 확인하고 해당 인덱스를 포함하지 않은 배열을 새로 만드는 방법입니다.

#include <vector>
#include <limits>

std::vector<int> solution(std::vector<int> arr) {
    std::vector<int> answer;
    int min = std::numeric_limits<int>::max();
    int minIndex = 0;
    
    for (int i = 0; i < arr.size(); ++i)
    {
        if (min > arr[i])
        {
            min = arr[i];
            minIndex = i;
        }
    }
    
    for (int i = 0; i < arr.size(); ++i)
    {
        if (i != minIndex)
        {
            answer.push_back(arr[i]);
        }
    }
    
    if (0 == answer.size())
    {
        answer.push_back(-1);
    }
    
    return answer;
}

첫 반복문에서 가장 작은 값을 찾고, 해당 인덱스를 저장합니다.

두 번째 반복문에서 새로운 벡터에 값을 넣어줍니다.


배열에서 가장 작은 수를 확인하고 해당 인덱스를 제거해 반환하는 방법이 있습니다.

#include <vector>
#include <algorithm>

std::vector<int> solution(std::vector<int> arr) {
    std::vector<int>::iterator min = min_element(arr.begin(), arr.end());

    arr.erase(min);

    if (true == arr.empty())
    {
        arr.push_back(-1);
    }

    return arr;
}

min_element함수를 사용해 배열에서 가장 작은 값을 찾습니다.

벡터의 erase함수를 사용해서 가장 작은 값의 요소를 제거합니다.

성능 요약

가장 작은 수를 확인하고, 배열을 새로 만든 성능입니다.

테스트 1 〉 통과 (11.32ms, 13.3MB)
테스트 2 〉 통과 (0.08ms, 4.15MB)
테스트 3 〉 통과 (0.13ms, 3.88MB)
테스트 4 〉 통과 (0.05ms, 4.14MB)
테스트 5 〉 통과 (0.04ms, 4.23MB)
테스트 6 〉 통과 (0.16ms, 4.21MB)
테스트 7 〉 통과 (0.33ms, 4.21MB)
테스트 8 〉 통과 (0.01ms, 3.68MB)
테스트 9 〉 통과 (0.02ms, 4.21MB)
테스트 10 〉 통과 (0.01ms, 4.14MB)
테스트 11 〉 통과 (0.01ms, 3.66MB)
테스트 12 〉 통과 (0.02ms, 4.16MB)
테스트 13 〉 통과 (0.03ms, 3.68MB)
테스트 14 〉 통과 (0.14ms, 3.82MB)
테스트 15 〉 통과 (0.06ms, 3.64MB)
테스트 16 〉 통과 (0.16ms, 4.21MB)


테스트 1 〉 통과 (10.93ms, 13.3MB)
테스트 2 〉 통과 (0.08ms, 4.21MB)
테스트 3 〉 통과 (0.12ms, 4.17MB)
테스트 4 〉 통과 (0.05ms, 4.22MB)
테스트 5 〉 통과 (0.03ms, 4.2MB)
테스트 6 〉 통과 (0.15ms, 4.08MB)
테스트 7 〉 통과 (0.28ms, 4.13MB)
테스트 8 〉 통과 (0.01ms, 4.22MB)
테스트 9 〉 통과 (0.02ms, 4.14MB)
테스트 10 〉 통과 (0.01ms, 3.68MB)
테스트 11 〉 통과 (0.01ms, 4.21MB)
테스트 12 〉 통과 (0.02ms, 4.14MB)
테스트 13 〉 통과 (0.03ms, 4.21MB)
테스트 14 〉 통과 (0.14ms, 4.21MB)
테스트 15 〉 통과 (0.06ms, 4.21MB)
테스트 16 〉 통과 (0.15ms, 4.14MB)

Programmers 카테고리 내 다른 글 보러가기

댓글남기기