#2020. 09. 23
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
- arr은 자연수를 담은 배열입니다.
- 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
- divisor는 자연수입니다.
- array는 길이 1 이상인 배열입니다.
arr divisor return [5, 9, 7, 10] 5 [5, 10] [2, 36, 1, 3] 1 [1, 2, 3, 36] [3, 2, 6] 10 [-1]
import java.util.Arrays;
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = {};
ArrayList<Integer> temp = new ArrayList<>();
for(int i = 0; i < arr.length; i++) {
if(arr[i] % divisor == 0) temp.add(arr[i]);
}
if(temp.size() == 0) {
answer = new int[1];
answer[0] = -1;
}
else {
answer = new int[temp.size()];
for(int i = 0; i < answer.length; i++) {
answer[i] = temp.get(i);
}
Arrays.sort(answer);
}
return answer;
}
}
ArrayList로 temp를 만들어줍니다. arr의 배열을 첫번째 인덱스부터, 마지막까지 divisor로 나눈 나머지가 0이면, temp에 add시켜줍니다. arr배열을 다 한 뒤, temp의 사이즈가 0이면(divisor로 나누어 떨어지는 숫자가 없었다면) answer배열의 크기를 1로 만들고, -1을 넣어줬습니다.
그 경우가 아니라면, temp의 크기만큼 answer배열의 크기를 늘리고, temp의 값들을 answer배열에 넣어준 후, Arrays.sort를 이용해 정렬시켜줬습니다.