[프로그래머스] 나누어 떨어지는 숫자 배열-JAVA

말하는 감자·2022년 6월 28일
0

Programmers Level 1

목록 보기
27/66
post-thumbnail

프로그래머스 Level 1

🔒 나누어 떨어지는 숫자 배열

📚 문제 설명

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


✅ 제한 사항

  • arr은 자연수를 담은 배열입니다.

  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.

  • divisor는 자연수입니다.

  • array는 길이 1 이상인 배열입니다.


📖 입출력 예

arrdivisorreturn
[5, 9, 7, 10]5[5, 10]
[2, 36, 1, 3]1[1, 2, 3, 36]
[3,2,6]10[-1]

📃 입출력 예 설명

입출력 예#1
arr의 원소 중 5로 나누어 떨어지는 원소는 5와 10입니다. 따라서 [5, 10]을 리턴합니다.

입출력 예#2
arr의 모든 원소는 1으로 나누어 떨어집니다. 원소를 오름차순으로 정렬해 [1, 2, 3, 36]을 리턴합니다.

입출력 예#3
3, 2, 6은 10으로 나누어 떨어지지 않습니다. 나누어 떨어지는 원소가 없으므로 [-1]을 리턴합니다.


🗝️ 작성 코드

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer = {-1};
        List<Integer> answ = new ArrayList<Integer>();
        
        for(int num : arr) {
            if(num % divisor == 0) answ.add(num);
        }
        
        if(answ.size() != 0) {
            answer = new int[answ.size()];

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

            Arrays.sort(answer);  
        }
        
        return answer;
    }
}

answer에 들어갈 요소들의 수가 정해져 있지 않기때문에 ArrayList에 요소들을 저장했다.

처음에는 answer{-1}로 정의를 해놓는다.
그리고 arr의 요소들을 foreach문을 통해 divisor와 나누어 떨어지는 지 체크한다.
조건에 부합한다면 ArrayListansw에 삽입한다.

answ.size()가 0이 아니라면 나누어 떨어지는 요소가 하나 이상 있는 것이므로 answeransw.size()만큼의 크기를 가진 정수형 배열로 새로 정의한다.
그리고 answeransw의 값들을 넣어준다.

profile
나는 말하는 감자다

0개의 댓글