Algorithm/Programmers
[Programmers] Lv.0 / 배열 만들기 3 / Java
unknownomad
2023. 12. 5. 23:55
문제
풀이
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
int[] interval1 = Arrays.copyOfRange(arr, intervals[0][0], intervals[0][1] + 1);
int[] interval2 = Arrays.copyOfRange(arr, intervals[1][0], intervals[1][1] + 1);
int[] answer = new int[interval1.length + interval2.length];
System.arraycopy(interval1, 0, answer, 0, interval1.length);
System.arraycopy(interval2, 0, answer, interval1.length, interval2.length);
return answer;
}
}
Arrays.copyOfRange(T[] original, int from, int to)
- original: 복사할 배열
- from: 복사할 시작 인덱스(포함)
- to: 복사할 끝 인덱스(제외)
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
- src: 복사할 배열
- srcPos: 원본 배열에서 복사를 시작할 인덱스
- dest: 복사된 요소를 저장할 배열
- destPos: 대상 배열에서 복사를 시작할 인덱스
- length: 복사할 요소의 개수
import java.util.*;
class Solution {
public int[] solution(int[] arr, int[][] intervals) {
return Arrays.stream(intervals)
.flatMapToInt(ints -> Arrays.stream(Arrays.copyOfRange(arr, ints[0], ints[1] + 1)))
.toArray();
}
}
for loop vs Stream
속도
for loop | Stream |
|
|
코드 가독성
for loop | Stream |
|
|
부작용(Side-effects)
for loop | Stream |
|
|
결론
for loop | Stream |
|
|
출처
https://school.programmers.co.kr/learn/courses/30/lessons/181895