728x90
int 배열을 Integer List로 변환
List<Integer> intList = Arrays.stream(arr).boxed().collect(Collectors.toList());
Java 8 이후부터는 Stream을 사용할 수 있습니다.
여기서 boxed() 메소드는 Primitive Stream 값들을 Wrapper Class로 바꿔줍니다.
그후, collect(Collectors.toList())를 이용하여, 주어진 stream을 List로 변경해 줄 수 있습니다.
import java.util.ArrayList;
import java.util.Arrays;
import java.util.stream.Collectors;
class Solution {
public int[] solution(int[] arr, int[] query) {
ArrayList<Integer> arrayList = (ArrayList<Integer>) Arrays.stream(arr).boxed().collect(Collectors.toList());
ArrayList<Integer> temp = new ArrayList<>();
boolean check = true;
for (int i = 0; i < query.length; i++) {
if (check) {
for (int j = 0; j <= query[i]; j++) {
temp.add(arrayList.get(j));
}
arrayList = temp;
temp = new ArrayList<>();
check = false;
} else {
for (int k = query[i]; k < arrayList.size(); k++) {
temp.add(arrayList.get(k));
}
arrayList = temp;
temp = new ArrayList<>();
check = true;
}
}
return arrayList.stream().mapToInt(Integer::intValue).toArray();
}
}
import java.util.Arrays;
import java.util.stream.IntStream;
class Solution {
public int[] solution(int[] arr, int[] query) {
return IntStream.range(0, query.length)
.boxed()
.reduce(arr, (current, next) -> next % 2 == 0 ?
Arrays.copyOfRange(current, 0, query[next] + 1) :
Arrays.copyOfRange(current, query[next], current.length),
(a, b) -> a);
}
}
728x90
반응형
'Algorithm > 프로그래머스' 카테고리의 다른 글
[알고리즘] 왼쪽 오른쪽 Java (0) | 2023.05.11 |
---|---|
[알고리즘] 순서 바꾸기 Java (0) | 2023.05.10 |
[알고리즘] n 번째 원소부터 Java (0) | 2023.05.08 |
[알고리즘] 리스트 자르기 Java (0) | 2023.05.07 |
[알고리즘] 가까운 1 찾기 Java (0) | 2023.05.07 |