
정수 배열 arr가 주어집니다. 배열 안의 2가 모두 포함된 가장 작은 연속된 부분 배열을 return 하는 solution 함수를 완성해 주세요.
단, arr에 2가 없는 경우 [-1]을 return 합니다.
arr의 길이 ≤ 100,000arr의 원소 ≤ 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] |
입출력 예 #1
입출력 예 #2
입출력 예 #3
입출력 예 #4
function solution(arr) {
// 배열에서 2가 있는 첫 번째와 마지막 인덱스 찾기
const firstIndex = arr.indexOf(2);
const lastIndex = arr.lastIndexOf(2);
// 2가 있는 구간의 부분 배열 반환
return firstIndex === -1 ? [-1] : arr.slice(firstIndex, lastIndex + 1);
}
// 입출력 예 테스트
console.log(solution([1, 2, 1, 4, 5, 2, 9])); // [2, 1, 4, 5, 2]
console.log(solution([1, 2, 1])); // [2]
console.log(solution([1, 1, 1])); // [-1]
console.log(solution([1, 2, 1, 2, 1, 10, 2, 1])); // [2, 1, 2, 1, 10, 2]
indexOf와 lastIndexOf 사용:indexOf(2):2가 처음 등장하는 위치를 반환합니다.1을 반환하면 배열에 숫자 2가 없는 것입니다.lastIndexOf(2):2가 마지막으로 등장하는 위치를 반환합니다.firstIndex === -1:2가 배열에 없다면 [-1]을 반환합니다.arr.slice(firstIndex, lastIndex + 1):firstIndex부터 lastIndex까지의 구간을 반환합니다.