본문 바로가기
개인공부/Java 자바

[프로그래머스/자바Java] 짝수는 싫어요

by 토비냥이 2022. 11. 23.

문제

 

 

개념

- stream (스트림)이란?

컬렉션의 저장 요소를 하나씩 참조하여 람다식으로 처리할 수 있도록 해주는 반복자

*람다식 : 식별자 없이 실행 가능한 익명의 함수 표현식

 

- 특징

1. 람다식으로 요소 처리 코드를 제공

2. 내부 반복자를 사용한 병렬철

3. 중간 처리와 최종처리를 할 수 있다.

 

- stream얻기

1. 컬렉션으로부터 stream 얻기

stream = studentList.stream();

2.  배열로부터 stream 얻기

stream = Arrays.stream(strArray);

3. 숫자 범위로부터 stream 얻기

stream = IntStream.rangeClosed(1,100);

 

- stream 사용하기

1. 중간처리 : 필터링, 매핑, 정렬, 루핑

- 필터링

distinct()

filter()

- 매핑

flatMapXXX()

mapXXX()

mapToInt/ToDouble

- 정렬

sorted() 

- 루핑

peek() : 반복, 이후 반드시 최종처리 메소드가 호출되어야 함

 

2. 최종처리 : 루핑, 매칭, 기본 집계

- 루핑

forEach() 반복 : peek()와 같은 역할이지만 최종처리 차이가 있음

- 매칭

allMatch : 모두 만족

anyMatch : 하나라도 만족

nonMatch : 모두 만족하지 않음

위 3가지 매칭 모두 boolean 타입

-기본집계

sum

count

average

max

min

 

 

풀이

class Solution {
    public int[] solution(int n) {
        int[] answer = new int[(n+1)/2]; //홀수입력값 때문에 (n+1)/2

        for (int i =1; i<=n; i++){
            if(i%2==1){
                answer[i/2] = i; // 홀수값들이 순서대로 들어갈 수 있도록 
            }
        }
        return answer;
    }
}

 

 

아래 코드는 다른 분이 풀이하신거다... 내가 코드 짠 거랑 비교해보면 정말 짧다.. 아직 갈 길이 굉장히 많이 남았다 라는 생각이 든다

import java.util.stream.IntStream;

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