코딩테스트 스트림 사용

0

TIL

목록 보기
94/126

정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.

라는 문제를 보고
먼저 생각난 것은 그저 리스트로 변환한 뒤 for문과 if문을 사용해서 리스트에 담은 후
다시 배열로 변환해서 반환하는 방법이 바로 떠올랐다.

List<Integer> newList = new ArrayList<>(Arrays.asList(answer));
for (int i = 1; i <= n; i++) {
    if (n % i == 0) {
        newList.add(i);
    }
}
return newList.toArray(new Integer[0]);

생각보다 쉬웠다고 생각했는데
다른사람들의 풀이를 보니 stream을 사용해서 깔끔하게 한줄로 풀은 사람이 있었다.

return IntStream.rangeClosed(1, n).filter(i -> n % i == 0).toArray();

나는 스트림을 배워놓고 써먹지를 못하고있었고
코딩테스트 측면에서 보면 다른사람의 풀이가 훨씬 간결하게 풀이되었다.

코딩테스트 특성상 스트림을 잘 활용했다는 점은 내가 생각하지 못하였다.

다음에는 내가 생각해 볼 수 있는 여러가지 방법들을 생각해보면서 모두 시도해보는 연습도 해봐야겠다.

0개의 댓글