Algorithm/[BOJ]

[Java] 백준 10813번 : 공 바꾸기

정보통신 고심이 2024. 3. 11. 15:20

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

 

접근 방법

1) 공 넣기 문제와 비슷하게 N(바구니 개수), M (바구니 바꾸는 횟수)를 첫줄에 입력 받는다.

2) M번 만큼 반복문 반복

3) 배열 초기값 설정

4) 임시 변수(temp)로 값 섞기

- 바구니 번호(1부터 시작)와 배열 번호(0부터 시작) 주의할 것

 

 

정답 코드

import java.io.*;
import java.util.*;

public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        
        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());
        
        int[] arr = new int[N];
        
        // 배열 초기값 설정 (바구니 번호 == 배열 초기값)
        for(int i=0; i<N; i++){
            arr[i] = i+1; // 1~N
        }
        
        for(int l=1; l<=M; l++){
            st = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st.nextToken());
            int j = Integer.parseInt(st.nextToken());
            
            int temp = 0;
            temp = arr[i-1];
            arr[i-1] = arr[j-1];
            arr[j-1] = temp;
        }
        
        for(int i=0; i<arr.length; i++){
                bw.write(String.valueOf(arr[i]));
                bw.write(" ");
         }
         br.close();
         bw.flush();
         bw.close();
        }
    
}

 

처음에 배열 초기값 설정하는 부분을 작성하지 않아 0 0 0 0 0 이 출력 됐었다