문제
내가 작성한 정답
ArrayList
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> idx = new ArrayList<>();
for(int i=0; i<arr.length; i++) {
if (arr[i] == 2) idx.add(i);
}
int[] answer;
if(!idx.isEmpty()) {
int f = idx.get(0), l = idx.get(idx.size() - 1);
answer = new int[l - f + 1];
int id = 0;
for (int i = f; i <= l; i++) {
answer[id++] = arr[i];
}
} else {
answer = new int[]{-1};
}
return answer;
}
}
stream
import java.util.stream.*;
class Solution {
public int[] solution(int[] arr) {
int[] idx = IntStream.range(0,arr.length).filter(i->arr[i]==2).toArray();
return idx.length==0? new int[]{-1}
:IntStream.rangeClosed(idx[0],idx[idx.length-1]).map(i->arr[i]).toArray();
}
}
다른 사람들의 정답
반환 List
: subList(fromIndex, toIndex) - 리스트의 fromIndex(포함)부터 toIndex(미포함)까지의 부분 리스트를 반환한다.
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public List<Integer> solution(int[] arr) {
List<Integer> list = Arrays.stream(arr).boxed().collect(Collectors.toList());
//list.subList(fromIndex, toIndex): 리스트의 fromIndex(포함)부터 toIndex(미포함)까지의 부분 리스트를 반환한다.
return list.contains(2) ? list.subList(list.indexOf(2), list.lastIndexOf(2) + 1) : Arrays.asList(-1);
}
}
Share article