array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -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.*;
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문을 통해 오름차순으로 정렬한 후 반환합니다.