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

YH·2023년 12월 14일
0

문제

제일 작은 수 제거하기 : 문제 링크


문제 분석

  • 정수를 저장한 배열, arr에서 가장 작은수를 제거한 배열을 return하는 함수, solution을 완성. 단, 리턴하려는 배열이 빈 배열인 경우 배열에 -1을 채워 return. 예를들어 arr이 [4,3,2,1]인 경우는 [4,3,2]를 return 하고, [10]면 [-1]을 return
  • 제한 조건
    • arr은 길이 1 이상인 배열이다.
    • 인덱스 i, j에 대해 i != j이면 arr[i] != arr[j] 이다.
  • min_element() 함수를 사용하기 위해 algorithm 헤더를 include. erase() 함수와 min_element() 함수를 사용하여, 벡터 arr에서 가장작은 수를 찾고 삭제. 이후, if문과 empty() 함수를 통해 arr이 빈 배열이라면 -1을 arr에 저장. 최종적으로 저장된 arr을 return

algorithm 헤더의 min_element() 함수 사용법
*min_element(v.begin(), v.end());

  • 벡터 v에서 최소값을 return
    min_element(v.begin(), v.end()) - v.begin();
  • 벡터 v에서 최소값의 인덱스를 return

vector의 erase() 함수 사용법
v.erase(firse, last); // first 이상, last 미만의 범위의 원소를 삭제
v.erase(삭제하려는 값의 위치);

  • erase() 함수를 통해 vector의 특정 값을 삭제할 경우, 해당 값이 삭제 되고 그만큼 vector의 size가 줄어듬

empty() 함수 사용법
str.empty();
v.empty();

  • string 또는 vector 객체가 비어있으면 1을, 문자열 또는 원소가 저장되어 있으면 0을 반환

풀이

#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> arr) {
    arr.erase(min_element(arr.begin(), arr.end()));
    if(arr.empty()) arr.push_back(-1);
    return arr;
}
profile
Keep Recycling Your Dreams

0개의 댓글