• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

# 12935 제일 작은 수 제거하기

image

문제 정리

가장 작은 수를 제거한 배열을 return

생각해보기

배열 순회하면서 제일 작은 값 나오면 그 인덱스 저장하고 (min) 그 인덱스를 erase.
근데 마지막에 배열 검사해서 size가 0이면 push_back(-1)하고 리턴

코드 쓰기

내 풀이

#include <string>
#include <vector>

using namespace std;

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

풀고 나서 알게된 것

algorithm 헤더에 min_element 쓰면 최소값을 바로 찾을 수 있고,

find 쓰면 그 배열에 해당 element가 어딨는지 바로 찾을 수 있군..

vector<int> answer=arr;

요렇게 하면 나처럼 다시 answer.push_back(arr[i]) 할 필요가 없네!