연습장

29. 수열과 구간 쿼리 3 본문

프로그래머스/0단계

29. 수열과 구간 쿼리 3

js0616 2023. 6. 23. 21:54

Q. 정수 배열 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의 길이


예를 보면  [0, 3] 은  arr[0] 과 arr[3] 을 바꾼다.

queries 는 서로 맞 바꿀 자리 [index1, index2] 를 배열로 묶어서 가지고있다.

 

1번 [3,1]

2번 [1,2]

3번 [1,4] 

총 3번 (queries 리스트의 원소갯수 만큼) 자리를 바꾼다.

 

자리를 바로 맞바꾸게되면 

덮어씌워지게 되어서 원하는 값이 나오질않게됨으로

임시 변수 temp 를 설정하여 

값 하나를 저장해 두고 자리를 변경했다.


 

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


다른사람풀이

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

for 문 대신 forEach 를 사용했다 . 

[a,b] 로 배열  [index1, index2]  을 가져온다.  -> for문을 안써도됨 

 

[]을 이용하여 곧바로 바꾼다.  ->  임시변수 temp 를 안써도됨

 

 

 

'프로그래머스 > 0단계' 카테고리의 다른 글

31. 수열과 구간 쿼리 4  (0) 2023.06.23
30. 수열과 구간 쿼리 2  (0) 2023.06.23
28. 수 조작하기 2  (0) 2023.06.20
27. 수 조작하기 1  (0) 2023.06.20
26. 마지막 두 원소  (0) 2023.06.19