본문 바로가기
프로그래머스 C++/Level.1

프로그래머스 Level.1 나누어 떨어지는 숫자 배열

by yeni_0224 2023. 7. 7.
728x90
반응형

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> arr, int divisor) {
    vector<int> answer;
    for(int i = 0; i < arr.size(); i++)
    {
        if(arr[i] % divisor == 0)
        {
           answer.push_back(arr[i]);
        }         
    }
    sort(answer.begin(), answer.end());
        
    if(answer.empty())
    {
        answer.push_back(-1);
    } 
    return answer;
}

코드 실행까지는 통과되었으나 채점에서 틀려 고민했다. if , else if, bool 사용해가면서 어떻게든 맞춰보려고 했다가

인성이 나빠져버렸지~~ 이 문제로 인성이 나빠지면 안되는데에~~~ 이렇게 성장하는거지뭐

"한번이라도 나누어떨어지는 숫자가 있으면 -1이 출력되지 않도록 어떻게 할 것인가" 이부분을 잘 해결하는 것이 중요했다. bool 변수로 제어하려다가 true이다 false 이다의 무한굴레에 빠졌었다. 어떻게든 빠져나오려고 이번엔 괄호도 언리얼 개발할 때처럼 썼다. 해결에 필요한 식들은 적었으나 어느 괄호 안에 넣어주는가, 조건을 어떻게 잡을 것인가에서 고민이 많았다.

반응형

한번이라도 나누어떨어지는 숫자가 있으면 거기서 값을 다 넣어주고, 값이 아예 들어오지 않았을 경우는 별도의 if문으로 조건을 만들어 그 안에서 작업하도록 했다. 그래도 해결했으니 뿌듯하지만 빠르게 해결하지 못한 스스로에게 화가난다.

다음 번에 동일한 문제가 발생하면 이 경우를 떠올려 잘 해결할 수 있길 바랄 뿐이다.

728x90
반응형