문제
내가 작성한 정답
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
List<Integer> answer = new ArrayList<>();
for(int i: arr){
for(int j=0; j<i; j++){
answer.add(i);
}
}
return answer.stream().mapToInt(i->i).toArray();
}
}다른 사람들의 정답
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public List<Integer> solution(int[] arr) {
// 배열 arr를 IntStream으로 변환하고
return Arrays.stream(arr)
// 기본형 int를 Integer 객체로 박싱(래핑)하여 Stream<Integer>로 변환
.boxed()
// 각 숫자 num에 대해, Collections.nCopies(num, num)로 num를 num번 반복하는 리스트 생성
// 그 리스트의 스트림을 flatMap하여 여러 개의 스트림을 하나의 평면화된 스트림으로 합침
.flatMap(num -> Collections.nCopies(num, num).stream())
// 최종적으로 List<Integer>로 수집하여 반환
.collect(Collectors.toList());
}
}
Share article