알고리즘 Lv1 - 제일 작은 수 제거하기

 내가 쓴 코드

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

using namespace std;

vector<int> solution(vector<int> arr) {
    vector<int> tmp;
    vector<int> answer;

    tmp = arr;
    sort(tmp.begin(), tmp.end());

    for (int i = 0; i < arr.size(); i++)
    {
        if (arr[i] == tmp[0])
            continue;
        else
            answer.push_back(arr[i]);
    }

    if (answer.size() == 0)
        answer.push_back(-1);

    return answer;
}
다른 사람 코드
#include <algorithm>
#include <vector>
using namespace std;

vector<int> solution(vector<int> arr) {
    if (arr.size() == 1) {
        return { -1 };
    }
    arr.erase(std::min_element(arr.begin(), arr.end()));
    return arr;
}
 
배울점
- algorithm 기능 중 min_element 라는 최소값의 인덱스를 리턴해주는 기능이 있다. 
   *min_element를 이용하면 최소값을 구할 수 있다!
 
- vector의 erase() 기능은 지우고싶은 원소의 주소를 입력하면 지워준다.
   ex) arr.erase(min_element(arr.begin(), arr.end());  // arr 내에 가장 각은 원소값을 가지는 주소를 삭제
 
- if ( answer.size() == 0 ) 을 if( answer.empty()) 로 대체 할 수 있다.  
 

댓글을 작성해보세요.