import java.util.Arrays;
class Solution {
public int[] solution(int[] arr) {
int min = 100000, max = 0;
for (int i = 0; i < arr.length; i++) {
if (arr[i] == 2) {
min = Math.min(min, i);
max = Math.max(max, i);
}
}
if (min <= max) {
return Arrays.copyOfRange(arr, min, max + 1);
} else {
return new int[]{-1};
}
}
}
만약 현재 요소가 2인 경우, min과 max를 갱신합니다.
min은 현재 인덱스와 min 중 작은 값을 저장합니다. (Math.min 사용)
max는 현재 인덱스와 max 중 큰 값을 저장합니다. (Math.max 사용)
min이 max 이하인 경우, arr 배열에서 2가 모두 포함된 연속된 부분 배열이 존재하는 것이므로, Arrays.copyOfRange를 사용하여 arr 배열의 min부터 max + 1까지의 요소를 복사하여 반환합니다.
min이 max보다 큰 경우, arr 배열에 2가 없는 것이므로 존재하지 않는 부분 배열을 나타내기 위해 새로운 int 배열 {-1}을 생성하여 반환합니다.