Algorithm Study
[Java Algorithm] 프로그래머스 Lv.0 _ 수열과 구간 쿼리 3
microsaurs
2025. 2. 24. 10:57
[문제]
정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.
각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.
위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.
[Algorithm]
반복문을 통해 queries의 원소인 query를 모두 확인하여 query의 원소를 arr 배열 인덱스에 대입하기
[Code]
class Solution {
public int[] solution(int[] arr, int[][] queries) {
int n = 0;
for(int i =0; i<queries.length; i++){
n = arr[queries[i][0]];
arr[queries[i][0]] = arr[queries[i][1]];
arr[queries[i][1]] = n;
}
return arr;
}
}
arr[j]가 queries[i][1] 이라는 것을 아는 것이 중요했던 것 같음 !
머리로 어떻게 풀어야하는지는 알겠는데 구현을 어떻게 해야할지 모르겠어서 결국 검색해봄 ;
2차원 배열을 활용하는 것이 어렵다 -
[+ 다른 사람 풀이]
class Solution {
public int[] solution(int[] arr, int[][] queries) {
for (int[] query : queries) {
int i = query[0], j = query[1];
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
return arr;
}
}
위 코드도 깔끔하고 가독성이 좋은 것 같음
int i = query[0], j = query[1]로 먼저 선언해주니까 코드가 더 간결해져서 보기 편한 것 같다