<알고리즘 문제풀이&연습>/[C++] 백준, 프로그래머스 등등

[프로그래머스] LEVEL 1 : 나누어 떨어지는 숫자 배열(C++)

BlockDMask 2018. 8. 5. 09:00
반응형
  • 안녕하세요. BlockDMask 입니다.

  • 하나씩 하나씩 레벨 1부터 풀어보겠습니다

  • 천천히 부담없이 풀고있습니다. 문제 풀어보겠습니다.

0. 제목

  • 프로그래머스 LEVEL 1

  • '나누어 떨어지는 숫자 배열' 입니다.

1. 문제 설명

  • array의 각 element 중 divisor로 나누어 떨어지는 값을 
    오름차순으로 정렬한 배열을 반환하는 함수, solution을 구현.
    divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하면 됩니다.

  • 제한사항
    arr은 자연수를 담은 배열이고 
    정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
    divisor는 자연수입니다.
    array는 길이 1 이상인 배열입니다.

  • 예시.
    arr -> divisor -> return
    [5, 9, 6, 20] -> 5 -> [5, 20]
    [1, 2, 3] -> 10 -> [-1]
    [3, 5, 7, 1, 2, 9] -> 1 -> [1, 2, 3, 5, 7, 9]
    [8, 4, 5, 2, 1] -> 2 -> [2, 4, 8]

2. 풀이과정

  • 나누어 떨어지는 숫자 배열. 

  • 이름이 뭔가 있어보이지만.

  • 첫번째 인자로 들어오는 배열을
    두번째 인자로 들어오는 자연수로
    나누어 떨어지는 애들을
    순서대로 나열.
    없으면 -1 리턴해라.

  • C++ STL의 vector를 사용했고

  • <algorithm> 에 있는 sort 함수를 사용했습니다.

<연관글>

1. C++ STL의 Vector에 관한 내용

2. Sort 알고리즘에 관한 내용.


3. 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
bool Order(int a,int b) 
{
    return ( a < b );
}
 
vector<int> solution(vector<int> arr, int divisor) {
    vector<int> answer;
    for(size_t i = 0; i < arr.size(); ++i)
    {
        if(arr[i] % divisor == 0)
        {
            answer.push_back(arr[i]);
        }
    }
    
    if(answer.size() == 0)
    {
        answer.push_back(-1);
    }
    else
    {
        sort(answer.begin(), answer.end(), Order);
    }
    return answer;
}
cs


4. 채점


문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/12910

감사합니다.

반응형