프로그래머스

프로그래머스 짝수는 싫어요 문제풀이

애용이랑떼껄룩 2024. 1. 26. 15:44
728x90

문제 설명 

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

제한 사항

● 1 ≤ n ≤ 100

입출력

n result
10 [1, 3, 5, 7, 9]
15 [1, 3, 5, 7, 9, 11, 13, 15]

 

문제 풀이

public static List<Integer> solution1(int n) {
        int[] array = new int[n];
        
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i <= array.length; i++) {
            list.add(i);
        }
        
        list.stream()
            .filter(item -> item % 2 == 0)
            .collect(Collectors.toList())
            .forEach(re -> { list.remove(re); });
        
        return list;
    }

요새 stream을 활용해 보려고 해당 문제도 stream을 사용하여 풀이하였다.

array길이는 n의 개수만큼 설정하고

list에는 array길이만큼 값을 집어넣은 후,

stream을 통하여 2의 배수를 필터링하고 필터링된 나머지값은 forEach를 통하여 삭제해 줌

 

다른 풀이

public int[] solution2(int n) {
        return IntStream.rangeClosed(0, n).filter(value -> value % 2 == 1).toArray();
    }

나는 stream을 활용했지만 IntStream까지는 떠올리지 못하였다..ㅠ

rangeClose는 0~n까지 동작을 하게 해 주며 filter를 통하여 홀수들만 Array로 변경해 주어 반환한다

매우 간단하게 잘 짜신 것 같다...

 

태클은 환영!

반응형