[프로그래머스] Lv.0 수열과 구간 쿼리3.java

김엄지·2024년 3월 28일

알고리즘

목록 보기
28/90

🐤 목표

앞으로 매일 꾸준히 코딩테스트를 진행하면서 단계를 높여가보자.

문제 설명

정수 배열 arr와 2차원 정수 배열 queries이 주어집니다. queries의 원소는 각각 하나의 query를 나타내며, [i, j] 꼴입니다.

각 query마다 순서대로 arr[i]의 값과 arr[j]의 값을 서로 바꿉니다.

위 규칙에 따라 queries를 처리한 이후의 arr를 return 하는 solution 함수를 완성해 주세요.

제한사항

1 ≤ arr의 길이 ≤ 1,000
- 0 ≤ arr의 원소 ≤ 1,000,000
1 ≤ queries의 길이 ≤ 1,000
- 0 ≤ i < j < arr의 길이

입출력의 예

문제 풀이

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        int temp = 0;
        for (int i=0; i<queries.length; i++) {
            int num1 = queries[i][0];
            int num2 = queries[i][1];
            
            temp = arr[num1];
            arr[num1] = arr[num2];
            arr[num2] = temp;
        }
        return arr;
    }
}

1) 배열의 값을 교환할 때 임시로 값을 저장할 변수 temp를 선언
2) 반복문으로 queries 배열의 길이만큼 반복
3) 쿼리의 첫 번째 값과 두 번째 값을 각각 num1과 num2에 저장
4) temp를 사용하여 arr[num1]의 값을 임시 저장
5) arr[num2]의 값을 arr[num1]로 이동
6) temp에 저장된 값을 arr[num2]에 넣어서 값들을 서로 교환
7) 변경된 배열 arr 반환


❗공부한 내용

2차원 배열

예를 들어, 다음과 같은 2차원 배열을 생각해보자.

[[0, 1],
 [1, 2],
 [0, 2]]

이 배열은 3개의 행과 2개의 열로 이루어져 있다. 각 행은 대괄호로 묶여 있고, 각 행 안에는 요소들이 쉼표로 구분되어 있다. 총 3개의 행각 행마다 2개의 요소가 있다.

  • 첫 번째 행은[0, 1], 두 번째 행은 [1, 2], 세 번째 행은 [0, 2] 각 행은 배열로서 다시 대괄호로 묶여 있고,
  • 각 배열 안에 있는 요소는 해당 행과 열에 위치한 값들을 나타낸다.

이 배열에서 [0, 1]은 첫 번째 행의 첫 번째 열과 두 번째 열에 위치한 값들을 나타내며, [1, 2]는 두 번째 행의 첫 번째 열과 두 번째 열에 위치한 값들을 나타낸다. 마지막으로 [0, 2]는 세 번째 행의 첫 번째 열과 두 번째 열에 위치한 값들을 나타낸다.

profile
나만의 무언가를 가진 프로그래머가 되자

0개의 댓글