Header Banner
Kakao Logo

TECH.KAKAO.GG

기술 자료/Algorithm/프로그래머스 배열 조각하기

프로그래머스 배열 조각하기

Algorithm13일 전

정수 배열 arr와 query가 주어집니다.

query를 순회하면서 다음 작업을 반복합니다.

  • 짝수 인덱스에서는 arr에서 query[i]번 인덱스를 제외하고 배열의 query[i]번 인덱스 뒷부분을 잘라서 버립니다.
  • 홀수 인덱스에서는 arr에서 query[i]번 인덱스는 제외하고 배열의 query[i]번 인덱스 앞부분을 잘라서 버립니다.

위 작업을 마친 후 남은 arr의 부분 배열을 return 하는 solution 함수를 완성해 주세요.

 

function solution(arr, query) {
    for (let i = 0; i < query.length; i++) {
        if (i % 2 === 0) {
            arr = arr.slice(0, query[i] + 1); 
        } else {
            arr = arr.slice(query[i]);
        }
    }
    return arr;
}
  • for (let i = 0; i < query.length; i++): query 배열을 순회합니다. 여기서 iquery의 현재 인덱스입니다.
  • if (i % 2 === 0): query의 현재 인덱스 i가 짝수일 경우 (0, 2, 4, ...).
    • arr = arr.slice(0, query[i] + 1);: arr 배열을 0번 인덱스부터 query[i]번 인덱스까지 (exclusive of query[i] + 1) 자릅니다. 이렇게 하면 query[i]번 인덱스 이후의 모든 요소가 버려집니다.
  • else: query의 현재 인덱스 i가 홀수일 경우 (1, 3, 5, ...).
    • arr = arr.slice(query[i]);: arr 배열을 query[i]번 인덱스부터 마지막까지 자릅니다. 이렇게 하면 query[i]번 인덱스 이전의 모든 요소가 버려집니다.
  • return arr;: 모든 작업을 마친 후 최종적으로 남은 arr의 부분 배열을 반환합니다

키워드

배열 슬라이싱Array Slice배열 조작