❓Problem
정수 배열 arr와 query가 주어집니다.
query를 순회하면서 다음 작업을 반복합니다.
짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.
홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.
위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.
🚫Restrictions
5 ≤ arr의 길이 ≤ 100,000
0 ≤ arr의 원소 ≤ 100
1 ≤ query의 길이 < min(50, arr의 길이 / 2)
query의 각 원소는 0보다 크거나 같고 남아있는 arr의 길이 보다 작습니다.
📛Example
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번 인덱스의 쿼리이므로 뒷부분을 자른다. |
따라서 [1, 2, 3]을 return 합니다.
❗Solution
function solution(arr, query) {
var answer = [];
for( let i = 0; i < query.length; i++){
if(i % 2 == 0){
arr.splice(query[i]+1);
}else {
arr.splice(0,query[i]);
}
}
return arr;
}
/// 1. query의 배열을 돌린다
/// 2. i의 값이 짝수이면
/// 3. query[i]를 제외한 query[i]+1 이후의 값을 splice 한다.
/// 4. i의 값이 홀수이면
/// 5. query[i]를 제외한 이전의 값을 splice 한다.
💯Study
Array.prototype.splice()
splice()메서드는 배열의 기본 요소를 삭제하거나 교체하거나 새 요소를 추가하여 배열의 내용을 변경한다.
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// Inserts at index 1
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// Replaces 1 element at index 4
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "May"]
2번 시도를 포함하여 이후의 모든 요소 제거
const animal = ["tiger", "rabbit", "cow", "dog"];
animal.splice(2);
// animal = ["tiger", "rabbit"]
// remove ["cow", "dog"]
splice()를 사용해 배열 요소 제거하고 새로 추가하기
Array.splice(start, deleteCount, newItem, newItem, newItem, ...)
let months = ["January", "February", "Monday", "Tuesday"];
let days = months.splice(2, 2, "March", "April"); // 요소 두 개를 제외하고, 다른 요소를 추가
배열 요소 추출하기
// 1번 포함 1개 삭제
const aniaml = ["tiger", "rabbit", "cow", "dog"]
animal.splice(1,1); // ["tiger", "cow", "dog"]
// 1번 포함 2개 삭제
animal.splice(1,2); //["tiger"]
Reference
'Coding Test > Programmers' 카테고리의 다른 글
[Programmers JavaScript] Lv.1 덧칠하기 (0) | 2023.10.18 |
---|---|
[Programmers JavaScript] Lv.1 추억점수 (1) | 2023.10.05 |
[Programmers JavaScript] Lv.0 옹알이(1) (2) | 2023.09.25 |