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

JIHYUN·2021년 8월 7일
0

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

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]

📌사용언어 : JAVA

📌Solution

import java.util.*;
class Solution {
    	public int[] solution(int[] arr, int divisor) {
        int[] answer = {};
        
        Vector v = new Vector<Integer>();
        
        for(int i = 0; i < arr.length; i++) {
        	if(arr[i]%divisor == 0) {
        		v.add(arr[i]);
        	}
        }
            if(v.size()==0){
                v.add(-1);
            }
        answer = new int[v.size()];
        for(int i = 0; i < answer.length; i++) {
        	answer[i] = (int)v.get(i);
        }
        int tmp;
        for(int i = 0; i < answer.length-1; i++ ) {
            for (int j = i+1; j < answer.length; j++ ) {
                if(answer[j] < answer[i]) {
                    tmp = answer[j];
                    answer[j] = answer[i];
                    answer[i] = tmp;
                }
            }
        }
		return answer;
    }
}

😎풀이

우선 arr의 원소들을 divisor로 나누었을때 떨어지는 arr의 원소들을 저장하기 위한 벡터v를 생성합니다.
for문을 arr의 길이만큼 반복하며 arr의 원소들을 하나씩 divisor로 나누어 나누어 떨어지는 원소들만 v에 저장해 줍니다.
만약 v의 크기가 0이라면, 즉, arr의 원소들 중 divisor로 나누어 떨어지는 수가 하나도 없다면 v에 -1을 저장합니다.
배열 answer를 만든 후 그 안에 v의 값들을 저장해 줍니다.
그리고 배열 answer의 값을 for문을 통해 오름차순으로 정렬한 후 반환합니다.

profile
이것저것 공부중

0개의 댓글