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

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

문제

내가 작성한 정답

import java.util.*; import java.util.stream.*; class Solution { public int[] solution(int[] arr) { int first = Arrays.stream(arr).boxed().collect(Collectors.toList()).indexOf(2); int next = -1; for(int i= arr.length-1; i > first; i--){ if(arr[i]==2){ next = i; break; } } return (first==-1)? new int[]{-1} : (next==-1)? new int[]{2} : Arrays.copyOfRange(arr,first,next+1); } } import java.util.Arrays; class Solution { public int[] solution(int[] arr) { int first = -1, last = -1; for(int i=0; i< arr.length; i++){ if(arr[i]==2){ if(first==-1){ first = i; } last = i; } } return (first==-1)? new int[]{-1} : (last==-1)? new int[]{2} : Arrays.copyOfRange(arr,first,last+1); } }

다른 사람들의 정답

import java.util.stream.IntStream; class Solution { public int[] solution(int[] arr) { int[] idx = IntStream.range(0, arr.length).filter(i -> arr[i] == 2).toArray(); if (idx.length == 0) return new int[]{-1}; return IntStream.rangeClosed(idx[0], idx[idx.length - 1]).map(i -> arr[i]).toArray(); } } import java.util.*; class Solution { public ArrayList<Integer> solution(int[] arr) { ArrayList<Integer> answer = new ArrayList<Integer>(); int start = -1; int end = -1; for(int i = 0; i<arr.length; i++){ if(arr[i]==2){ start = i; break; } } for(int i = arr.length-1; i>=0; i--){ if(arr[i]==2){ end = i; break; } } if(start==-1 && end==-1){ answer.add(-1); } else{ for(int i = start; i<=end; i++){ answer.add(arr[i]); } } return answer; } }
Share article

silver