import java.util.ArrayList;
import java.util.List;
class Solution {
public int[] solution(int n, int[] slicer, int[] num_list) {
int a = slicer[0];
int b = slicer[1];
int c = slicer[2];
List<Integer> result = new ArrayList<>();
switch (n) {
case 1:
for (int i = 0; i <= b; i++) {
result.add(num_list[i]);
}
break;
case 2:
for (int i = a; i < num_list.length; i++) {
result.add(num_list[i]);
}
break;
case 3:
for (int i = a; i <= b; i++) {
result.add(num_list[i]);
}
break;
case 4:
for (int i = a; i <= b; i += c) {
result.add(num_list[i]);
}
break;
}
return result.stream().mapToInt(Integer::intValue).toArray();
}
}
case-switch 문 써봤다 ~
// 방법 1
int[] arr1 = new int[list.size()]
for (int i = 0 ; i < list.size() ; i++)
arr1[i] = list.get(i).intValue();
// 방법 2
int[] arr2 = list.stream()
.mapToInt(i -> i)
.toArray();
// 방법 3
int[] arr3 = list.stream()
.mapToInt(Integer::intValue)
.toArray();
// 방법 4
int[] arr4 = list.stream()
.filter(i -> i != null)
.mapToInt(i -> i)
.toArray();
이렇게해서 list에 integer 값을 int[] 값으로 변경할 수 있다.
stream API에 대해 공부를 해야할듯
[다른 사람의 풀이]
import java.util.*;
import java.util.stream.IntStream;
class Solution {
public int[] solution(int n, int[] slicer, int[] numList) {
return IntStream.iterate(n == 1 ? 0 : slicer[0], i -> i <= (n == 2 ? numList.length - 1 : slicer[1]), i -> n == 4 ? i + slicer[2] : i + 1).map(i -> numList[i]).toArray();
}
}
한줄좌 껀데 IntStream 사용하심
class Solution {
public int[] solution(int n, int[] slicer, int[] num_list) {
int start = n == 1 ? 0 : slicer[0];
int end = n == 2 ? num_list.length - 1 : slicer[1];
int step = n == 4 ? slicer[2] : 1;
int[] answer = new int[(end - start + step) / step];
for (int i = start, j = 0; i <= end; i += step) {
answer[j++] = num_list[i];
}
return answer;
}
}
이렇게하면 배열로만 처리할 수 있구나..!