문제 풀이/프로그래머스 알고리즘

나누어 떨어지는 숫자 배열

열심히 해 2024. 9. 28. 15:18

https://school.programmers.co.kr/learn/courses/30/lessons/12910

 

첫 번째 답 :

 

class Solution {
    public int[] solution(int[] arr, int divisor) {
        ArrayList<Integer> integerAnswer = new ArrayList<>();

        for (int i : arr) {
            if (i % divisor == 0) {
                integerAnswer.add(i);
            } else {
                return new int[]{-1};
            }

        }

        Collections.sort(integerAnswer);

        int[] answer = new int[integerAnswer.size()];

        for (int i=0; i<integerAnswer.size(); i++) {
            answer[i] = integerAnswer.get(i);
        }

        return answer;
    }
}

 

 

정답 : 

 

더보기
class Solution {
    public int[] solution(int[] arr, int divisor) {
        ArrayList<Integer> integerAnswer = new ArrayList<>();

        for (int i : arr) {
            if (i % divisor == 0) {
                integerAnswer.add(i);
            } 
        }

        if (integerAnswer.isEmpty()) {
            return new int[]{-1};
        } 

        Collections.sort(integerAnswer);

        int[] answer = new int[integerAnswer.size()];

        for (int i=0; i<integerAnswer.size(); i++) {
            answer[i] = integerAnswer.get(i);
        }

        return answer;
    }
}

 

첫 번째 답에서 else {} 부분이 삭제되고 if(integerAnswer.isEmpty()) {} 추가됐습니다.

 

첫 번째 답처럼 하면 else 부분 진입 시 바로 {-1} 을 반환하기 때문에 문제의 조건에 맞지 않습니다.....