Programmers Lv.1 - 나누어 떨어지는 숫자 배열 [Java]

seren-dev·2022년 5월 9일

Programmers Lv.1

목록 보기
12/15

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

나의 풀이

0.3ms

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        ArrayList<Integer> list = new ArrayList<>();
        for (int i : arr) {
            if (i % divisor == 0) {
                list.add(i);
            }
        }

        Collections.sort(list);
        
        if (list.size() == 0) {
            return new int[]{-1};
        }
        
        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size() ; i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }
}
  • ArrayList 생성
  • list.add(i)
  • Collections.sort(list);
  • int 배열 생성 후
  • answer[i] = list.get(i)

마지막 for문은 다음과 같이 stream을 사용하여 바꿀 수 있다. 다만 속도는 느려진다.
return list.stream().mapToInt(e -> e).toArray();

다른 사람의 풀이

stream 사용

import java.util.*;

class Solution {
    public int[] solution(int[] arr, int divisor) {
        arr = Arrays.stream(arr).filter(e -> e % divisor == 0).toArray();
        if (arr.length == 0) {
            return new int[]{-1};
        }
        Arrays.sort(arr);
        return arr;
        
    }
}

0개의 댓글