Level. 0
문제
아무 원소도 들어있지 않은 빈 배열 X가 있습니다.
양의 정수 배열 arr가 매개변수로 주어질 때, arr의 앞에서부터 차례대로 원소를 보면서 원소가 a라면 X의 맨 뒤에 a를 a번 추가하는 일을 반복한 뒤의 배열 X를 return 하는 solution 함수를 작성해 주세요.
* 제한사항
- 1 ≤ arr의 길이 ≤ 100
- 1 ≤ arr의 원소 ≤ 100
풀이
import java.util.List;
import java.util.ArrayList;
import java.util.stream.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> list = new ArrayList<>();
for(int num : arr){
for(int i=0; i<num; i++)
list.add(num);
}
return list.stream().mapToInt(i->i).toArray();
}
}
풀이2. stream
import java.util.stream.*;
import java.util.Collections;
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
return Arrays.stream(arr).boxed().flatMap(n -> Collections.nCopies(n,n).stream()).mapToInt(i->i).toArray();
}
}
boxed() 메소드는 int, long, double 을 Integer, Long, Double 요소로 박싱하여 Stream을 생성한다.
map과 flatMap
1. map
- 스트림 원소를 변환시켜 리턴한다.
2. flatMap
- 스트림을 평면화한다. 두개이상의 스트림을 병합할 때 사용할 수 있다.
Collections.nCopies()
public static <T> List<T> nCopies(int number, T object)
- 주어진 객체를 n번 반복한 값을 리턴한다.
- number : 반복할 횟수
- object : 반복해야할 값
https://school.programmers.co.kr/learn/courses/30/lessons/181861
'Algorithm > Programers - Java' 카테고리의 다른 글
[프로그래머스(Java)] 인덱스 바꾸기 / toCharArray(), String.valueOf() (0) | 2024.01.14 |
---|---|
[프로그래머스(Java)] 문자열 정렬하기 (1) / replaceAll() (0) | 2024.01.14 |
[프로그래머스(Java)] 공백으로 구분하기 2 / 정규식 (1) | 2024.01.06 |
[프로그래머스(Java)] x 사이의 개수 / split() (1) | 2024.01.06 |
[프로그래머스(Java)] 콜라츠 수열 만들기 / Stream.iterate() (0) | 2023.12.30 |