Notice
Recent Posts
Recent Comments
Link
«   2026/04   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

luke

[백준] - 공 바꾸기 (10813) (Java/자바) 본문

알고리즘문제/백준 문제(Java)

[백준] - 공 바꾸기 (10813) (Java/자바)

luke-king 2025. 7. 29. 12:56

문제: https://www.acmicpc.net/problem/10813

 

 

 

 

 

 

 

 

 

 

 

문제.


 

 

 

 

 

 

 

 

풀이.


public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        int n = sc.nextInt();
        int m = sc.nextInt();
        int[] arr = new int[n+1];

        for(int i = 1; i <= n; i++){
            arr[i] = i;
        }

        for(int k = 1; k <= m; k++){
            int i = sc.nextInt();
            int j = sc.nextInt();

            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }

        for(int i = 1; i <= n; i++){
            System.out.print(arr[i] + " ");
        }

    }

}

 

이번 문제는 백준 "공 바꾸기" 문제다.

지난 글 풀었던 문제와 비슷해 보이지만 1번 바구니부터 n번 바구니 안에는 각 바구니 번호와 같은 공이 들어 있다.

그리고 입력하는 i번 바구니와 j번 바구니(공 번호) 공을 교환해서 출력하는 거다. 그럼 바로 문제 풀이 해보겠다.

 

1. n번까지의 바구니와 m번 공을 바꾸려 하는 회수를 입력한다.

 

2.  배열은 arr[n+1] 생성해 준다 +1을 해준 이유는 0번 인덱스부터 필요한 게 아니라 우리는 1번 바구니부터 필요하기 때문이다.

 

3. 첫번째 for문에서는 n번만큼 반복해 줘서 arr []에 1~5 값을 넣어준다.

 

4. 두번째 for문에서는 i, j값을 입력해준다.

temp 변수에 arr[i]값(교환 대상)을 임시로 넣어준다.

arr[i] = arr[j] (교환 대상) j값을 arr[i]에 바꿔준다.

arr[j] = temp temp에 있던 arr[i] 원래 값을 arr[j] 자리에 복사한다. 즉 i값과 j값이 서로 바뀌는 거다.

 

5. 마지막 for문에서 최종 적으로 값을 출력하면 끝이다.