개발하는 kim-hasa

[c++][프로그래머스] 제일 작은 수 제거하기 본문

Algorithm/Programmers(c++)

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

kim-hasa 2021. 8. 5. 19:23

https://programmers.co.kr/learn/courses/30/lessons/12935

 

코딩테스트 연습 - 제일 작은 수 제거하기

정수를 저장한 배열, arr 에서 가장 작은 수를 제거한 배열을 리턴하는 함수, solution을 완성해주세요. 단, 리턴하려는 배열이 빈 배열인 경우엔 배열에 -1을 채워 리턴하세요. 예를들어 arr이 [4,3,2,1

programmers.co.kr

가장 작은 수를 제거하고 배열에 넣는 문제입니다.

 

가장 먼저 사이즈가 1이라면 제거 후 빈 배열이 되므로 -1을 리턴해줍니다.

 

그렇지 않다면 가장 작은 숫자를 찾은 후, 그 숫자를 제외한 나머지 숫자를 배열에 넣습니다.

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> arr) {
    vector<int> answer;
    
    if(arr.size() == 1)     // 사이즈가 1인 배열 즉 제거하면 빈 배열이 되는 경우
        answer.push_back(-1);
    else
    {
        int small = arr[0];     // 가장 작은 수 찾는 변수
        for(int i=1; i<arr.size(); i++)
        {
            if(arr[i] < small)
            {
                small = arr[i];     // 가장 작은 수 찾기
            }
        }
        
        for(int i=0; i<arr.size(); i++)
        {
            if(arr[i] != small)     // 가장 작은 수 제외하고 배열에 넣기
            {
                answer.push_back(arr[i]);
            }
        }
    }
        
    return answer;
}