문제
내가 작성한 정답
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
List<Integer> answer = new ArrayList<>();
for(int i=0; i<intervals.length; i++){
for(int j = intervals[i][0]; j<=intervals[i][1]; j++){
answer.add(arr[j]);
}
}
return answer.stream().mapToInt(i->i).toArray();
}
}다른 사람들의 정답
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
// 1. intervals 배열을 스트림으로 변환 (Stream<int[]>)
return Arrays.stream(intervals)
// 2. 각 interval마다 arr 배열의 부분 배열을 복사하여 IntStream으로 변환
.flatMapToInt(ints -> Arrays.stream(
Arrays.copyOfRange(arr, ints[0], ints[1] + 1)
))
// 3. 모든 부분 배열의 IntStream을 하나의 IntStream으로 합친 후,
// 4. 결과를 int 배열로 변환하여 반환
.toArray();
}
}
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
int s1 = intervals[0][0], e1 = intervals[0][1], s2 = intervals[1][0], e2 = intervals[1][1], idx = 0;
int[] answer = new int[e1 - s1 + e2 - s2 + 2];
for (int i = s1; i <= e1; i++) {
answer[idx++] = arr[i];
}
for (int i = s2; i <= e2; i++) {
answer[idx++] = arr[i];
}
return answer;
}
}
Share article