본문 바로가기
알고리즘/프로그래머스

(프로그래머스/자바) 힌트문제1 01. 수학 - 프로그래머스 : 짝수는 싫어요

by son_i 2023. 7. 18.
728x90

코딩테스트 연습 - 짝수는 싫어요 | 프로그래머스 스쿨 (programmers.co.kr)

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

간단하게 풀었다.

import java.util.ArrayList;

class Solution {
    public static ArrayList solution(int n) {
            ArrayList<Integer> answer = new ArrayList();
            for (int i = 1; i <= n; i++) {
                if (i % 2 != 0) {
                    answer.add(i);
                }
            }
            return answer;
        }
}

 이런 문제들은 항상 배열로 리턴을 하는데 나는 ArrayList로 바꾸곤 했다.

근데 다른 분 코드 중에 배열로 리턴하는 방법이 있어서 알아두려고 한다.

 

import java.util.ArrayList;

class Solution {
    public static int[] solution(int n) {
            ArrayList<Integer> answer = new ArrayList();
            for (int i = 1; i <= n; i++) {
                if (i % 2 != 0) {
                    answer.add(i);
                }
            }
            return answer.stream().mapToInt(x -> x).toArray();
        }
}

스트림 재밌군 ..!

 

mapToInt는 처음 보는 녀석이라 좀 찾아봤다.

일단 map은 중개연산으로 map안의 연산을 각 요소별로 수행하는 메서드다.

mapToInt(), mapToLont(), mapToDouble() 는 기본형 특화 스트림으로 각각 IntStream,LongStream,DoubleStream이 반환된다. 기본형, primitive type에 특화된 Stream 이라는 의미이다.

 * map() 을 수행 하면 반환값으로 Stream<T>가 반환되어야 하기 때문에, 무조건 Wrapper class로 박싱이 될 수 밖에 없다.불필요한 박싱 연산을 줄이기 위해 나온 것이 기본형 특화 스트림.