[Programmers] 코딩테스트 입문 12910. 나누어 떨어지는 숫자 배열 수

이지현·2023년 4월 13일
0

Algorithm

목록 보기
75/81
post-thumbnail

✔️ Problem URL

나누어 떨어지는 숫자 배열


✔️ Problem

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.


✔️ Code

💡 코드는 통과되었지만 실행시간이 조금 비효율적이다. 어떻게 리팩토링 해야 할까?

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        Arrays.sort(arr);
        List<Integer> answer = new LinkedList<>();
        int cnt = 0;
        
        for(int i : arr) {
            if(i % divisor == 0){
                answer.add(i);
                cnt++;
            }
        }
        if(cnt == 0) answer.add(-1);
        return answer.stream().mapToInt(Integer::intValue).toArray();
    }
}

✔️ Refactoring

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        int[] answer = Arrays.stream(arr).filter(factor -> factor % divisor == 0).toArray();
        if(answer.length == 0) answer = new int[] {-1};
        Arrays.sort(answer);
        
        return answer;
   }
}
profile
느슨하지 않게 꾸준히

0개의 댓글