arr
와 2차원 정수 배열 queries
이 주어집니다. queries
의 원소는 각각 하나의 query
를 나타내며, [i, j]
꼴입니다.query
마다 순서대로 arr[i]
의 값과 arr[j]
의 값을 서로 바꿉니다.queries
를 처리한 이후의 arr
를 return 하는 solution 함수를 완성해 주세요.arr
의 길이 ≤ 1,000arr
의 원소 ≤ 1,000,000queries
의 길이 ≤ 1,000i
< j
< arr
의 길이뭔 소린지 못 알아들었다. 일단 2차원 배열에 대한 이해가 부족해서 개념부터 찾아봤다.
2차원 배열은 아래와 같이 생성한다.
int[][] arr1 = new int [3][5];
// 세로 길이(행)가 3, 가로 길이(열)가 5인 int 형 2차원 배열 생성
String[][] arr2 = new String [2][7];
// 세로 길이(행)가 2, 가로 길이(열)가 7인 String 형 2차원 배열 생성
double[][] arr3 = new double [4][6];
// 세로 길이(행)가 4, 가로 길이(열)가 6인 double 형 2차원 배열 생성
이미지로 나타내면 위와 같다.
생성과 동시에 초기화를 하려면 아래처럼 하면 된다.
int[][] arr3 = new int[][] {
{1, 2, 3, 4, 5}, // 1행 초기화
{6, 7, 8, 9, 10}, // 2행 초기화
{11, 12, 13, 14, 15} // 3행 초기화
}; // 3행 5열의 2차원 배열
int[][] arr3 = {
{1, 2, 3, 4, 5}, // 1행 초기화
{6, 7, 8, 9, 10}, // 2행 초기화
{11, 12, 13, 14, 15} // 3행 초기화
}; // 3행 5열의 2차원 배열
for 문을 queries
의 길이만큼 반복한다.
queries
배열의 총 길이는 알 수 없으나, 내부의 1차원 배열은 [i, j]
꼴이므로 int[i][1]
형태이다.
arr
의 queries[i][0]
번 째 원소에, arr
의 queries[i][1]
번째 원소를 할당한다.
arr
의 queries[i][1]
번 째 원소도 arr
의 queries[i][0]
번째 원소로 바꾸어야 하는데 이미 다른 원소로 바뀌어있다. 따라서 변수로 arr[queries[i][0]]
를 설정하여 변하지 않는 값을 잡아두고, 이 값을 할당한다.
class Solution {
public int[] solution(int[] arr, int[][] queries) {
for(int i = 0; i < queries.length; i++) {
int one = arr[queries[i][0]];
arr[queries[i][0]] = arr[queries[i][1]];
arr[queries[i][1]] = one;
}
return arr;
}
}
arr[queries[i][0]]
나 arr[queries[i][1]]
중에 하나를 변수로 잡은 다음, 그 값을 할당하면 된다. 아래처럼 둘다 변수로 잡아도 된다.
class Solution {
public int[] solution(int[] arr, int[][] queries) {
for(int i = 0; i < queries.length; i++) {
int one = arr[queries[i][0]];
int two = arr[queries[i][1]];
arr[queries[i][0]] = two;
arr[queries[i][1]] = one;
}
return arr;
}
}