한 걸음씩

[프로그래머스][JS] 수열과 구간 쿼리 3 본문

Programmers

[프로그래머스][JS] 수열과 구간 쿼리 3

winter17 2023. 6. 6. 12:48

https://school.programmers.co.kr/learn/courses/30/lessons/181924

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

풀이 과정

function solution(arr, queries) {
    let result = arr.slice()
    
    for (let i = 0; i < queries.length; i++){
        let [s, e] = queries[i]

        // swap 서로의 값을 바꾸기 위해서 임의의 변수 temp생성
        let temp = result[s]
        result[s] = result[e]
        result[e] = temp
        // console.log(result)
    }
    return result;
}

// [ 3, 1, 2, 0, 4 ]
// [ 3, 2, 1, 0, 4 ]
// [ 3, 4, 1, 0, 2 ]

 

수열과 구간 쿼리 1 문제와 비슷한데 3문제는 swap 하는 문제이다.

a = 1

b = 2 가 있고 a, b의 값을 바꾸려고 할 때, 임의의 변수 c를 생성하고 a의 값을 담아줘야 한다

c = a

그러면 c에 a가 할당되어 있으니까 a변수에 b를 할당할 수 있게 되고 b변수에 a값을 가진 c 변수를 할당하면 된다.


리뷰

이것도 어떻게 구현해야 할지 한참 고민했는데 단순하게 생각할수록 빨리 풀 수 있는 것 같다.

 

function solution(arr, queries) {
    queries.forEach( ([a,b]) => { // 요소가 하나씩 나오도록 
        [arr[a],arr[b]] = [arr[b],arr[a]]; // swap 
    })
    return arr;
}

방법은 다르지만 훨씬 깔끔해서 배울게 있는 코드라서 들고왔다