본문 바로가기

프로그래머스

[알고리즘] 배열 만들기3

배열 만들기3

배열 arr의 첫번째 구간에 해당하는 배열과 두번째 구간에 해당하는 배열을 앞뒤로 붙여 새로운 배열을 만들어 return.

 

arr intervals result
[1, 2, 3, 4, 5] [[1, 3], [0, 4]] [2, 3, 4, 1, 2, 3, 4, 5]

 

나의 풀이:

function solution(arr, intervals) {
    var answer = []
    for(i = 0; i < intervals.length; i++) {
        for(j = intervals[i][0]; j <= intervals[i][1]; j++) {
            answer.push(arr[j])
        }
    } return answer
}

첫번째 구간(intervals[i][0]) 과 두번째 구간(intervals[i][1]) 에 있는 arr[j] 값을 answer 에 push 함.

 

 

다른 풀이:

function solution(arr, intervals) {
    const [[a,b],[c,d]] = intervals
    return [...arr.slice(a,b+1), ...arr.slice(c,d+1)]
}

Destructuring 문법을 사용하여, intervals 의 값을 [[a,b],[c,d]] 에 할당한 후 범위만큼 slice. 이후 두 배열을 합침.

아직 구조분해 문법이 눈에 잘 안익어서, 비슷한 유형의 쿼리 문제를 풀때 최대한 활용해보도록 해야겠다. 쿼리 문제가 너무 헷갈린다.