문제 설명
정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.
단, arr에 2가 없는 경우 [-1]을 return 합니다.
제한사항
- 1 ≤ arr의 길이 ≤ 100,000
- 1 ≤ arr의 원소 ≤ 10
입출력 예
arr | result |
[1, 2, 1, 4, 5, 2, 9] | [2, 1, 4, 5, 2] |
[1, 2, 1] | [2] |
[1, 1, 1] | [-1] |
[1, 2, 1, 2, 1, 10, 2, 1] | [2, 1, 2, 1, 10, 2] |
풀이
import java.math.*;
import java.util.*;
class Solution {
public int[] solution(int[] arr) {
int max = -1;
int min = 100001;
for(int i=0; i<arr.length; i++) {
if(arr[i] == 2) {
max = Math.max(i, max);
min = Math.min(i, min);
}
}
return max == -1 ? new int[] {-1} : Arrays.copyOfRange(arr, min, max + 1);
}
}
'Coding Test > 프로그래머스[JAVA]' 카테고리의 다른 글
[프로그래머스 Lv0.] 181897번 리스트 자르기 (JAVA) (0) | 2024.10.29 |
---|---|
[프로그래머스 Lv0.] 181881번 조건에 맞게 수열 변환하기 2 (JAVA) (0) | 2024.10.29 |
[프로그래머스 Lv0.] 181855번 문자열 묶기 (JAVA) (0) | 2024.10.29 |
[프로그래머스 Lv0.] 181924번 수열과 구간 쿼리 3 (JAVA) (0) | 2024.10.29 |
[프로그래머스 Lv0.] 181934번 조건 문자열 (JAVA) (0) | 2024.10.28 |