[알고리즘문제풀기] 2의 영역

silver's avatar
Apr 24, 2025
[알고리즘문제풀기] 2의 영역

문제

내가 작성한 정답

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

silver