개발/코딩테스트

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

prpn97 2023. 7. 4. 21:00

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.
각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.

 

입출력 예

arr queries result
[0, 1, 2, 3, 4] [[0, 3],[1, 2],[1, 4]] [3, 4, 1, 0, 2]

 

문제 풀이

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

1. queries의 값을 확인한다.

for문을 도는데, 그 안에서 query라는 변수를 선언하고, 배열에 i,j로 구조분해할당을 한다.

 

2. 해당하는 값의 위치를 arr에서 대입해서 둘의 위치를 바꾼다. 

반복문이므로 queries를 다 돌 때까지 위치를 바꾸게 된다. 

 

 

코멘트

방법을 돌고 돌아서 쉬운 문제임에도 오래걸렸다. 

배열을 생성해서 indexOf로 값을 지정해서 fill로 채워보기도 하고, 

map을 사용해서 기존 값에서 바꿔보려고도 했는데 쉽지 않았다. 

하나의 값을 바꿀 수는 있는데 둘을 바꾸는 방법이 바로 떠오르지 않았다.

오히려 프로젝트 하면서 구조분해할당에 대해서 익히긴 했는데

이렇게 직접 접목하려니 쉽지 않은 것 같다. 더 익숙해지도록 많은 문제를 풀어야 할 것 같다.

728x90