1. 문제
2. 제출 답안
class Solution {
public int[] solution(int[] arr, int[][] queries) {
for (int[] query : queries) {
int i = query[0];
int j = query[1];
// arr[i]와 arr[j]의 값을 서로 바꿈
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
}
원본 배열 직접 변경
3. 다른 풀이
import java.util.Arrays;
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int[] answer = Arrays.copyOf(arr, arr.length);
for (int[] query : queries) {
int i = query[0];
int j = query[1];
int temp = answer[i];
answer[i] = answer[j];
answer[j] = temp;
}
return answer;
}
}
<배열의 복사본을 생성하는 이유>
원래 배열(arr)을 변경하지 않고, 새로운 배열(answer)을 만들어서 작업하기 위해서이다.
Java에서 배열은 참조 타입이기 때문에, 배열 변수를 복사하면 참조만 복사되어 두 변수가 같은 배열을 참조하게 된다.
-> 새로운 배열을 만들어서 작업하려면 Arrays.copyOf나 직접 배열을 순회하면서 복사하는 등의 방법을 사용.
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv.0 수 조작하기2(Java) (0) | 2023.11.08 |
---|---|
[프로그래머스] Lv.0 수 조작하기1(Java) (0) | 2023.11.07 |
[프로그래머스] Lv.0 마지막 두 원소(Java) ※ (0) | 2023.11.01 |
[프로그래머스] Lv.0 이어 붙인 수(Java) (0) | 2023.10.25 |
[프로그래머스] Lv.0 원소들의 곱과 합(Java) (0) | 2023.10.25 |