[ Lv.0 ] 짝수는 싫어요

leeda06·2023년 12월 7일
0

코메미들

목록 보기
29/58
post-thumbnail

문제 설명

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

제한사항

  • 1 ≤ n ≤ 100

입출력 예

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

입출력 예 설명

입출력 #1
10 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9]를 return합니다.

입출력 #2
15 이하의 홀수가 담긴 배열 [1, 3, 5, 7, 9, 11, 13, 15]를 return합니다.


내 코드

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

설명

  • .stream(): 목록에서 요소의 순차적인 '스트림'을 얻기 위해 '목록' 또는 모든 '컬렉션'에서 호출됩니다.

  • mapToInt(Integer::intValue): '스트림'의 각 요소를 정수로 변환하는 데 사용함. 이 경우 intValue() 메서드를 사용하여 각 Integer 객체를 기본 int 값으로 변환함. Integer::intValue는 Integer 클래스의 intValue 메서드를 참조하는 메서드 참조임.

  • .toArray() : 이 터미널 작업은 스트림의 요소를 배열로 변경함.

스트림이란?

  1. 데이터를 담고 있는 저장소(컬렉션)가 아니다.
  2. 스트림은 원본 데이터 소스를 변경하지 않는다.(Read Only)
  3. 스트림은 lterator처럼 일회용이다. (필요하면 다시 스트림을 생성해야 함)
  4. 최종 연산 전까지 중간연산을 수행되지 않는다.(lazy)
  5. 무제한일 수도 있다. (Short Circuit 메소드를 사용해서 제한할 수 있다.)
  6. 손쉽게 병렬 처리할 수 있다. (멀티 쓰레드 사용) (.parallel)
  7. 기본형 스트림으로 IntStream, LongStream, DoubleStream등 제공
  8. 오토박싱 등의 불필요한 과정이 생략됨.
  9. Stream<Integer> 대신에 IntStream을 사용하는게 더 효율적이다.
    뿐만 아니라 숫자의 경우 더 유용한 메서드를 Stream<T>보다 더 많이 제공한다.(.sum(), .averge() 등)
profile
웹솔루션과

0개의 댓글