알고리즘 문제 "나누어 떨어지는 숫자 배열"를 풀어보았습니다.
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
제한사항
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
문제를 해결하면서 핵심적인 부분은 arr의 값을 divisor로 나누어주기,
나누 값을 배열에 넣기,
배열을 오름차순으로 넣기 순서로 진행하면 될것이다.
arr을 divisor로 나누어주는 이유는 return값에 담아야 하는 값은 divisor에 배수가 되기 때문에 나누어 주는 것이며, divisor로 나누었을때 나머지가 0인 것이 divisor에 배수가 되기 때문이다.
import java.util.*; class Solution { public int[] solution(int[] arr, int divisor) { int[] answer = {}; // a1 이라는 ArrayList 를 선언 ArrayList<Integer> a1 = new ArrayList<Integer>(); for(int i = 0; i <arr.length; i++){ if(arr[i]%divisor == 0){ a1.add(arr[i]); // a1 리스트에 나누어 떨어지는 값 넣기 } } // 위 for문 실행시 담긴 값이 없으면 if(a1.isEmpty()){ // ai에 -1를 담아준다. a1.add(-1); } // 배열의 크기를 지정 answer = new int[a1.size()]; //a1 리스트를 answer 배열에 넣기 for(int i = 0; i<a1.size() ; i++){ //ai에 있는 값을 index0번부터 answer에 담는다. answer[i] = a1.get(i); } //sort()로 배열에 담겨있는 값을 오름차순으로 정렬 Arrays.sort(answer); return answer; } }