Post

[Programmers] #181924 - 수열과 구간 쿼리 3 [Java][C++][Python]

쿼리마다 지정된 두 인덱스의 원소를 서로 바꾸는 워밍업 문제.

[Programmers] #181924 - 수열과 구간 쿼리 3 [Java][C++][Python]

문제 링크


1. 아이디어

각 쿼리는 두 인덱스로 이루어져 있고, 두 인덱스에 해당하는 arr의 원소를 서로 바꾸면 된다. 쿼리 개수만큼 반복하면서 두 위치를 스왑하면 끝나는 간단한 구현 문제다.


2. 복잡도

접근시간공간
풀이$O(Q)$$O(1)$

($Q$ = queries의 길이)


3. 코드

풀이 [Java][C++][Python]

1
2
3
4
5
6
7
8
9
10
11
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        for (int[] q : queries) {
            int tmp = arr[q[0]];
            arr[q[0]] = arr[q[1]];
            arr[q[1]] = tmp;
        }

        return arr;
    }
}
1
2
3
4
5
6
7
8
9
10
#include <bits/stdc++.h>
using namespace std;

vector<int> solution(vector<int> arr, vector<vector<int>> queries) {
    for (auto& q : queries) {
        swap(arr[q[0]], arr[q[1]]);
    }

    return arr;
}
1
2
3
4
5
def solution(arr, queries):
    for a, b in queries:
        arr[a], arr[b] = arr[b], arr[a]

    return arr

This post is licensed under CC BY 4.0 by the author.