class Solution {
public int[] solution(int[] arr, int divisor) {
int[] answer = {};
int cnt = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] % divisor != 0) arr[i] = 0;
else cnt++;
}
if (cnt == 0) return new int[]{-1};
answer = new int[cnt];
for (int i = arr.length - 1; i >= 0 ; i--) {
if (arr[i] != 0) answer[--cnt] = arr[i];
}
int temp;
for (int i = 0; i < answer.length; i++) {
for (int j = 0; j < answer.length; j++) {
if (answer[i] < answer[j]) {
temp = answer[j];
answer[j] = answer[i];
answer[i] = temp;
}
}
}
return answer;
}
}
1. divisor로 나누어떨어지는값 찾기
// divisor로 나누어떨어지는 숫자의 개수 카운팅 용도
int cnt = 0;
for (int i = 0; i < arr.length; i++) {
// divisor로 나누어 떨어지지 않는 값은 0으로 대체시킴
if (arr[i] % divisor != 0) arr[i] = 0;
else cnt++;
// divisor로 나누어떨어지는 숫자는 카운팅
}
2. 찾는 값이 1개도 없는 경우
// cnt가 0이면 divisor로 나누어 떨어지는 숫자가 없는것이기 때문에 -1 배열 반환 후 종료
if (cnt == 0) return new int[]{-1};
3. answer 배열에 값 복사
// answer배열의 길이를 카운팅한 숫자만큼 지정
answer = new int[cnt];
for (int i = arr.length - 1; i >= 0; i--) {
// 배열 뒤에서부터 값이 있는 슷자를 answer에 복사
if (arr[i] != 0) answer[--cnt] = arr[i];
}
4. answer 배열 정렬
// 정렬
int temp;
for (int i = 0; i < answer.length; i++) {
for (int j = 0; j < answer.length; j++) {
if (answer[i] < answer[j]) {
temp = answer[j];
answer[j] = answer[i];
answer[i] = temp;
}
}
}