문제 설명
정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.
단, arr에 2가 없는 경우 [-1]을 return 합니다.
제한사항
- 1 ≤ arr의 길이 ≤ 100,000
- 1 ≤ arr의 원소 ≤ 10
풀이
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까지의 부분 배열을 반환하거나, -1을 포함한 배열을 반환한다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'알고리즘 & 코딩 테스트 > [Java]프로그래머스' 카테고리의 다른 글
| [프로그래머스_Java] Lv.0 리스트 자르기 (0) | 2024.01.04 |
|---|---|
| [프로그래머스_Java] Lv.0 문자열 묶기 (2) | 2024.01.04 |
| [프로그래머스_Java] Lv.0 한 번만 등장한 문자 (2) | 2024.01.04 |
| [프로그래머스_Java] Lv.0 간단한 논리 연산 (1) | 2024.01.04 |
| [프로그래머스_Java] Lv.0 진료 순서 정하기 (1) | 2024.01.04 |