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]로 먼저 선언해주니까 코드가 더 간결해져서 보기 편한 것 같다