개발/코딩테스트
[프로그래머스] 제일 작은 수 제거하기
매지깅
2021. 1. 9. 22:41
정수를 저장한 배열 arr 에서 가장 작은 수를 제거한 배열을 리턴해야 하는 문제이다.
단 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴해야 한다.
처음에 sort 함수를 사용해서 arr를 정렬시킨 후, 마지막 숫자만 빼서 리턴시키는 방식으로 풀었는데...
테스트케이스는 통과했는데 실제 제출하니까 전부 다 실패가 떳다.ㅠㅠ 멘붕...
찾아보니 arr 의 순서가 바뀌면 안 된다고...
예를 들어서 [5, 6, 1, 4] 라는 배열이 들어왔으면, 리턴하는 배열은 [5, 6, 4] 가 되어야 한다는 것이다.
그래서 그냥 각 배열 요소끼리 비교해서 제일 작은 수를 찾는 방법을 사용했다.
제일 작은 수와, 그 수의 index를 찾은 후, arr 에서 해당 index의 요소를 제거했다.
그 후 answer 벡터에 arr 벡터의 요소를 복사해주면 된다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> arr) {
vector<int> answer;
if(arr.size() == 1)
{
answer.push_back(-1);
}
else
{
int cmp = 0;
int min = arr[0];
for(int i = 1; i < arr.size(); i++)
{
if(min > arr[i])
{
min = arr[i];
cmp = i;
}
}
arr.erase(arr.begin()+cmp);
for(int j =0; j <arr.size(); j++)
{
answer.push_back(arr[j]);
}
}
return answer;
}