본문 바로가기
코테 준비(with 프로그래머스)

프로그래머스 day6, Java - 수열과 구간 쿼리3

by jeong11 2023. 11. 15.
반응형

수열과 구간쿼리 시리즈 기초문제 맞나요...? 어렵다

문제 설명

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

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

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

입출력 예
arr queries result
[0,1,2,3,4] [0,3],[1,2],[1,3] [3,4,1,0,2]

입출력 예 

각 쿼리에 따라 arr가 다음과 같이 변합니다.
arr
[0, 1, 2, 3, 4]
[3, 1, 2, 0, 4]
[3, 2, 1, 0, 4]
[3, 4, 1, 0, 2]

따라서 [3, 4, 1, 0, 2]를 return 합니다.

 

 

*문제 풀이 과정

문제 이해가 잘 안되서 배열 arr이 a,b, c, d, e라고 생각하고 queries를 적용해보았다 

        // arr [a, b, c, d, e]
        // queries [[0, 3],[1, 2],[1, 4]]
        
        //과정
        [a, b, c, d, e] , [0, 3] = [d, b, c, a, e] 
        [d, b, c, a, e] , [1, 2] = [d, c, b, a, e] 
        [d, c, b, a, e] , [1, 4] = [d, e, b, a, c]  
        
        //결과
        result arr = [d, e, b, a, c]

 

 

 

*내가 해결한 코드 

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
      int[] answer = new int[arr.length];
       
       int tmp=0;
       for(int i=0; i<queries.length; i++){
  
    	  int change = queries[i][0];
          int change2 = queries[i][1];
//          System.out.println(change + " : " + change2);         
          
          tmp = arr[change];  
          arr[change] = arr[change2];
          arr[change2] = tmp;
          
           answer = arr;
        } 
        return answer;
    }
}
반응형