정수를 저장한 배열 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;
}
'개발 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 콜라츠 추측 (0) | 2021.01.16 |
---|---|
[프로그래머스] 최대공약수와 최소공배수 (0) | 2021.01.09 |
[프로그래머스] 정수 제곱근 판별 (0) | 2021.01.08 |
[프로그래머스] 평균 구하기 (0) | 2021.01.08 |
[프로그래머스] 짝수와 홀수 (0) | 2021.01.05 |