내 풀이
public int[] solution(int[] arr, int[][] intervals) {
int length = 0;
// 범위의 개수를 먼저 더해서 배열의 크기를 알아낸다
for (int i = 0; i < intervals.length; i++) {
int[] group = intervals[i];
length += group[1] - group[0] + 1;
}
int[] answer = new int[length];
int index = 0;
// 범위에 맞는 데이터를 가져와서 증가되는 인덱스에 입력해준다
for (int i = 0;i < intervals.length; i++) {
int[] group = intervals[i];
for (int j = group[0]; j <= group[1]; j++) {
answer[index++] = arr[j];
}
}
return answer;
}
이건 따로 설명이 필요하지 않아서 그런데 내가 이 코드를 추가한 이유는 다른 stream 고수님의 스킬을 손민수 하기 위함이다
flatMapInt
copyOfRange
return Arrays.stream(intervals)
.flatMapToInt(x -> Arrays.stream(Arrays.copyOfRange(arr, x[0], x[1] + 1)))
.toArray();
확실히 그냥 막 작성해보는게 도움이 되는것 같다
stream은 문제를 많이 접하면 늘거같다