N

(프로그래머스 c++)제일 작은 수 제거하기 본문

프로그래머스 알고리즘/1단계

(프로그래머스 c++)제일 작은 수 제거하기

naeunchan 2020. 4. 28. 11:15
728x90
반응형

 

arr 배열에서 가장 작은 수를 찾아서 제거한 후 그대로 리턴해주면 된다..!

우선 arr의 size가 1이면 answer에 -1을 넣어 그대로 리턴해준다..!

(size가 1인 경우 가장 작은 수를 제거한 후 빈 배열이 되기 때문에..)

size가 1이 아니면 erase함수를 이용하여 가장 작은 수를 찾아 제거한다.

erase함수는 vector에서 사용하는 함수로, 해당 반복자(iterator)를 제거해주는 함수이다..!

본인은 min_element 함수를 사용하여 arr 배열서 가장 작은 수의 iterator를 받아와 제거하였다.

->min_element(arr.begin(), arr.end() = arr.begin()에서 arr.end()까지 가장 작은 수의 위치(반복자) 리턴..!

다른 예로는 max_element가 있다..! 이 두 함수도 종종 쓰이는 것 같으니 알아두면 좋은 함수이다..!

 

그 후 answer에 arr을 대입..! 리턴하면 끄으읏..!

사실 arr을 리턴해줘도 상관이 없다..!

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> arr) {
    vector<int> answer;
    
    if(arr.size() == 1)
    {
        answer.push_back(-1);
        return answer;
    }
    
    arr.erase(min_element(arr.begin(), arr.end()));
    answer = arr;
    return answer;
}
728x90
반응형