프로그래머스 제일 작은 수 제거하기 C++

이선아·2022년 2월 16일
2

제일 작은 수 제거하기.cpp

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

using namespace std;

vector<int> solution(vector<int> arr) {
    vector<int> answer(arr);
    int min_ele = *min_element(answer.begin(), answer.end());
    
    for(int i = 0; i < arr.size(); i++) {
        if(answer.size() == 1) {
            answer.clear();
            answer.push_back(-1);
            return answer;
        }
        
        answer.erase(remove(answer.begin(), answer.end(), min_ele), answer.end());
        
        return answer;
    }
}

answer의 길이가 1이라면 .clear()로 벡터 안의 원소를 제거해준 다음, .push_back(-1)으로 -1을 채워준 후 리턴해줍니다. (ex. [10] 이면 [-1] 리턴)

벡터 내의 최소값을 구하여 min_ele 변수에 담고 삭제하는 코드입니다.

최소값 구하기 위해서 min_element를 사용합니다. 최대값은 max_element ❗️
int min_ele = *min_element(answer.begin(), answer.end());
👉🏻 min_element의 리턴값이 포인터이기 때문에 값을 출력하기 위해 * 를 붙여줍니다.

벡터 내 값을 지울 때는 .erase()를 사용하지만, 특정 원소의 값(최소값)을 지우고 싶기 때문에 remove 를 사용할 수 있습니다.
벡터명.erase(remove(벡터명.begin( ), 벡터명.end( ), 지우고 싶은 원소 지정), 벡터명.end( ));
answer.erase(remove(answer.begin(), answer.end(), min_ele), answer.end());

profile
깃허브 놀러오세용 -> Tistory로 블로그 이전합니다.

0개의 댓글