새소식

알고리즘 문제풀이/프로그래머스

[프로그래머스(Programmers)] level1 나누어 떨어지는 숫자 배열 cpp, java 풀이

  • -

이번에는 프로그래머스 level1 문제인 나누어 떨어지는 숫자 배열 자바 풀이입니다
이 문제는 정말 간단하게 풀 수 있어요
물론 저 보다 정말 간단하게 짜신 분 정말 많죠...

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

저는 이 문제를 array list와 collections를 통해 풀었어요

for문을 돌면서 나누어 떨어지는 숫자가 있다면 그것을 arraylist에 담아요
모두 담고난 후, collections의 sort를 이용해 정렬합니다
그리고 for문을 이용해 차례차례 출력하면 끝!!!!

여기서 중요한건 arraylist안에 있는 원소들을 Collections.sort()를 이용해 정렬하는게 포인트에요

만약 arraylist에 담긴게 하나도 없다면 나누어 떨어지는게 없는 것이므로 -1 출력하게 합니다

import java.util.ArrayList;
import java.util.Collections;

class Solution {
  public int[] solution(int[] arr, int divisor) {
      ArrayList<Integer> arrList = new ArrayList<>();

      for(int i=0; i<arr.length; i++){
          if(arr[i] % divisor == 0){
              arrList.add(arr[i]);
          }
      }

      if(arrList.size() == 0)
          arrList.add(-1);
      else
        Collections.sort(arrList);

      int[] answer = new int[arrList.size()];
      for(int i=0; i<arrList.size(); i++){
          answer[i] = arrList.get(i);
      }
      return answer;
  }
}

c++ 풀이

c++ algorithm 헤더의 sort함수를 이용해 간단하게 풀 수 있습니다

#include <vector>
#include <algorithm>

using namespace std;

vector<int> solution(vector<int> arr, int divisor) {
    vector<int> ans;

    for (int num : arr) {
        if (num % divisor == 0) {
            ans.push_back(num);
        }
    }

    if (ans.size() == 0) {
        ans.push_back(-1);
    }
    else {
        sort(ans.begin(), ans.end());
    }

    return ans;
}

궁금하신게 있다면 댓글 달아주세요!!

도움 되셨다면 공감(하트) 부탁드립니다

https://github.com/wlgh325/Programmers_algorithm/tree/master/Level1/%EB%82%98%EB%88%84%EC%96%B4%20%EB%96%A8%EC%96%B4%EC%A7%80%EB%8A%94%20%EC%88%AB%EC%9E%90

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.