[js] 수열과 구간 쿼리 3

sookyoung.k·2024년 4월 30일
0
post-thumbnail

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.

query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.

위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.

제한사항

  • 1 ≤ arr의 길이 ≤ 1,000
    - 0 ≤ arr의 원소 ≤ 1,000,000
  • 1 ≤ queries의 길이 ≤ 1,000
    - 0 ≤ i < j < arr의 길이

🤓 나의 풀이

function solution(arr, queries) {
    for (let i=0; i<queries.length; i++) {
        let memo = arr[queries[i][0]];
        arr[queries[i][0]] = arr[queries[i][1]];
        arr[queries[i][1]] = memo;
    }
    return arr;
}

간단하게 index의 번호를 이용하여 위치를 변경하였다.
다만, arr[queries[i][0]] = arr[queries[i][1]];를 실행하면 원래의 arr 원소의 값이 바뀌기 때문에 let memo = arr[queries[i][0]];를 통해서 원래 arr에서 필요한 값의 위치를 기억하여 할당해주었다.

😊 다른 풀이 1

function solution(arr, queries) {
    queries.forEach( ([a,b]) => {
        [arr[a],arr[b]] = [arr[b],arr[a]];
    })
    return arr;
}

forEach문을 사용하여서queries 배열을 순회한다. 배열 구조 분해 할당을 사용하여 a, b의 값을 교환한다.

😋 다른 풀이 2

function solution(arr, queries) {
    for(let [i, j] of queries) {
        [arr[i], arr[j]] = [arr[j], arr[i]];
    }
    return arr;
}

여기서도 배열 구조 분해 할당을 사용하였다!

profile
영차영차 😎

0개의 댓글