[프로그래머스]짝수는 싫어요
짝수는 싫어요
문제 설명
정수 n이 매개변수로 주어질 때, n 이하의 홀수가 오름차순으로 담긴 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
- 1 ≤ n ≤ 100
입출력 예
n | result |
---|---|
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) {
int[] answer = {};
ArrayList<Integer> list = new ArrayList<Integer>(); // 정수 타입으로 지정
for (int i=1; i<=n; i++){
if (i%2==1){
list.add(i);
}
}
int[] arr = list.stream() //arraylist를 array로 바꾸는 메서드이다.
.mapToInt(Integer::intValue) //Integer의 intValue() 메서드를 참조해서 값타입인 int로 언박싱한다.
.toArray(); //IntStream의 원소를 배열로 변환한다.
answer=arr;
return answer;
}
}
문제를 풀기 위해서 arraylist를 array로 바꾸는 메서드를 배웠다.
근데 다른사람이 푼 코드를 보니 배열로 안바꾸어도 정답이 되는듯 하다.
배운점
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n) {
return IntStream.rangeClosed(0, n) //0부터 n까지의 정수 스트림을 생성하는 메서드이다.
.filter(value -> value % 2 == 1) //필터링 하는 메서드이다.
.toArray(); //array로 변환한다.
}
}
arraylist를 array로 바꾸기 위해서 검색하고, 남이 푼 코드를 보면 stream을 사용한다.
stream
* 데이터를 담는 저장소는 아니다.
* 데이터를 변경하지 않는다.
* 재사용할 수 없다.
* 각 요소가 1번씩 처리된다.
* 무제한일 수도 있다.
stream은 데이터.Stream생성().중간연산()...중간 연산(); 구조이다,
종료연산에서 Stream을 리턴하지 않는다.
Leave a comment