
정수 배열 arr와 query가 주어집니다.
query를 순회하면서 다음 작업을 반복합니다.
arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.
arr의 길이 ≤ 100,000arr의 원소 ≤ 100query의 길이 < min(50, arr의 길이 / 2)query의 각 원소는 0보다 크거나 같고 남아있는 arr의 길이 보다 작습니다.| arr | query | result |
|---|---|---|
| [0, 1, 2, 3, 4, 5] | [4, 1, 2] | [1, 2, 3] |
입출력 예 #1
query의 값과 처리 전후의 arr의 상태를 표로 나타내면 다음과 같습니다.| query의 값 | query 처리 전 | query 처리 후 | 비고 |
|---|---|---|---|
| 4 | [0, 1, 2, 3, 4, 5] | [0, 1, 2, 3, 4] | 0번 인덱스의 쿼리이므로 뒷부분을 자른다. |
| 1 | [0, 1, 2, 3, 4] | [1, 2, 3, 4] | 1번 인덱스의 쿼리이므로 앞부분을 자른다. |
| 2 | [1, 2, 3, 4] | [1, 2, 3] | 2번 인덱스의 쿼리이므로 뒷부분을 자른다. |
function solution(arr, query) {
// query 배열을 순회하며 arr을 조작
query.forEach((v, i) => {
i % 2 === 0 ? arr.splice(v + 1) : arr.splice(0, v);
});
return arr;
}
// 입출력 예 테스트
console.log(solution([0, 1, 2, 3, 4, 5], [4, 1, 2])); // [1, 2, 3]
console.log(solution([10, 20, 30, 40, 50], [2, 1, 3])); // [30, 40]
console.log(solution([5, 6, 7, 8, 9], [3, 2, 4])); // [7]
console.log(solution([1, 2, 3, 4, 5, 6], [5, 2, 1])); // [2, 3]
forEach 반복문:query 배열을 순회하며 인덱스 i와 값 v를 가져옵니다.i가 짝수인지 홀수인지에 따라 조건을 나누어 작업합니다.i % 2 === 0):arr.splice(v + 1):v + 1 이후의 모든 요소를 제거합니다.arr = [0, 1, 2, 3, 4, 5], v = 4 → arr.splice(4 + 1) → arr = [0, 1, 2, 3, 4].arr.splice(0, v):v 인덱스 이전의 모든 요소를 제거합니다.arr = [0, 1, 2, 3, 4], v = 1 → arr.splice(0, 1) → arr = [1, 2, 3, 4].arr를 반환합니다.