본문 바로가기
algorithm/Programmers

[JAVA] 짝수는 싫어요

by 이쟝 2023. 1. 7.

문제 설명

정수 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합니다.

입출력 #1

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

1. 기본 배열로 풀기

class Solution {
    public int[] solution(int n) {
        
        int[] answer = new int[(n+1)/2]; // 홀수 값만 넣을 배열

        for(int i=1; i<=n; i++) {  // 1부터 n번씩 돌면서 홀수값을 배열에 넣기
           if(i%2 == 1) answer[i/2] = i;
        }
        return answer;
    }
}

2. ArrayList로 풀기

import java.util.ArrayList;

class Solution {
    public ArrayList solution(int n) {
        ArrayList<Integer> list = new ArrayList<Integer>();
        	for(int i=1; i<=n; i+=2) {
            	    list.add(i);
        	}
        return list;
    }
}

3. Stream으로 풀기

import java.util.stream.IntStream;

class Solution {
    public int[] solution(int n) {
        return IntStream.rangeClosed(0,n).filter(value -> value%2 == 1).toArray();
        //return IntStream.range(0,n+1).filter(value -> value%2 == 1).toArray();
        //return IntStream.range(1,n+1).filter(value -> value%2 == 1).toArray();
    }
}
  • rangeClosed는 끝값을 포함하고, range는 끝값을 포함하지 않는다.  

Stream으로도,, ArrayList로도,, 방법이 다양하다...