정수를 저장한 배열 arr 에서 가장 작은 수를 제거한 배열을 리턴해야 하는 문제이다.

단 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴해야 한다.

 

처음에 sort 함수를 사용해서 arr를 정렬시킨 후, 마지막 숫자만 빼서 리턴시키는 방식으로 풀었는데...

테스트케이스는 통과했는데 실제 제출하니까 전부 다 실패가 떳다.ㅠㅠ 멘붕...

 

찾아보니 arr 의 순서가 바뀌면 안 된다고...

예를 들어서 [5, 6, 1, 4] 라는 배열이 들어왔으면, 리턴하는 배열은 [5, 6, 4] 가 되어야 한다는 것이다.

 

그래서 그냥 각 배열 요소끼리 비교해서 제일 작은 수를 찾는 방법을 사용했다.

제일 작은 수와, 그 수의 index를 찾은 후, arr 에서 해당 index의 요소를 제거했다.

그 후 answer 벡터에 arr 벡터의 요소를 복사해주면 된다.

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr) {
    vector<int> answer;
    
    if(arr.size() == 1)
    {
        answer.push_back(-1);
    }
    else
    {
        int cmp = 0;
        int min = arr[0];
        
        for(int i = 1; i < arr.size(); i++)
        {
            if(min > arr[i])
            {
                min = arr[i];
                cmp = i;
            }
        }
        arr.erase(arr.begin()+cmp);
        
        for(int j =0; j <arr.size(); j++)
        {
            answer.push_back(arr[j]);
        }
    }
    return answer;
}

 

 

+ Recent posts