코딩테스트/프로그래머스 기초 트레이닝

[Javascript] 수열과 구간 쿼리 3

dev_swH 2023. 6. 27. 15:11

점점 갈수록 문제가 어려워지는 게 느껴진다😂

아직 기초인데 진짜 코딩테스트는 어떡하면 좋지?!?

 

문제 설명 : 

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

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

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

 

나의 풀이...

처음에는 reduce에 splice를 써서 해보려는데 또 초깃값 데이터를 인식해서 메소드를 사용하지 못했다.

그래서 이렇게 풀었다.

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

 

다른 사람의 풀이를 쭉 구경하는데 이 코드가 제일 깔끔했다.

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

 

코드를 보면 다 이해가 되는데, 바로바로 그 문법이 생각나지 않는 게 문제다.

아직도 ES6을 내 걸로 만들려면 갈 길이 먼 것 같다.

이것도 잘 기억해뒀다가 다른 문제에서 응용해봐야지!