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

김아무개·2023년 3월 15일
0

프로그래머스

목록 보기
3/41

문제 설명

내 코드

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;
        }
    }
}
profile
Hello velog! 

0개의 댓글