연습장
29. 수열과 구간 쿼리 3 본문
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 |