티스토리 뷰

문제출처

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr


문제

정수 배열 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, 4] ] [ 3, 4, 1, 0, 2 ]

 

풀이

queries의 길이만큼 반복문을 통해 queries[i][0]의 값과 queries[i][1]의 값을 - > arr의 인덱스 값으로
1. arr[queries[i][0]], arr[queries[i][1]] 의 요소값 을 변수에 저장합니다.

2. arr[queries[i][0]], arr[queries[i][1]]의 자리에 1번의 값을 저장합니다.

 

소스

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

 


소스2 - 향상된 for문 사용

class Solution {
    public int[] solution(int[] arr, int[][] queries) {
        
        for(int[] queri : queries){
            int own = arr[queri[0]];
            int two = arr[queri[1]];
            
            arr[queri[0]] = two;
            arr[queri[1]] = own;
        }   
        return arr;
    }
}