본문 바로가기

프로그래머스(Java)/Level 0

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

728x90

코드 힌트

  1. queries 배열을 순회:
    • 2차원 배열인 queries를 for문을 사용하여 순회합니다. 각 쿼리 [n, m]를 가져올 수 있게 합니다.
    • forEach를 사용해도 좋고, 일반 for문을 사용해도 괜찮습니다.
  2. 값 교환하기:
    • arr[n]과 arr[m]의 위치를 바꿉니다. 자바에서 값을 교환할 때는 임시로 저장할 변수(temp)를 사용해야 합니다.
    • 파이썬에서는 n, m = m, n처럼 간단하게 값을 교환할 수 있지만,
      자바에서는 temp = n;    n = m;    m = temp;  와 같이 임시 변수를 사용합니다.
  3. 메소드 활용 연습:
    • solution 메소드에 모든 코드를 넣을 수도 있지만, 메소드 분리를 연습하고 싶다면 swap 메소드를 따로 만들어 보세요. 이렇게 하면 코드가 더 깔끔해지고 재사용성이 높아집니다.

 


정답은 더보기 클릭

더보기
class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        // queries 배열을 순회하면서 각 쿼리 [n, m]을 가져옵니다.
        for (int[] query : queries) {
            int n = query[0];  // 교환할 첫 번째 인덱스
            int m = query[1];  // 교환할 두 번째 인덱스
            // 배열의 n번째와 m번째 값을 교환합니다.
            int temp = arr[n];
            arr[n] = arr[m];
            arr[m] = temp;
        }
        return arr;
    }
}

 

 

메소드 swap 만들어서 문제 풀기

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        for (int[] query : queries) {
            swap(arr, query);
        }
        return arr;
    }
    
    // 배열의 두 값을 교환하는 메소드
    public void swap(int[] arr, int[] query) {
        int n = query[0];  // 교환할 첫 번째 인덱스
        int m = query[1];  // 교환할 두 번째 인덱스
        
        int temp = arr[n];
        arr[n] = arr[m];
        arr[m] = temp;
    }
}
728x90