본문 바로가기
백준

[백준] 10813번 : 공 바꾸기 – JAVA [자바]

by Hongwoo 2023. 8. 7.
반응형

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

 

10813번: 공 바꾸기

도현이는 바구니를 총 N개 가지고 있고, 각각의 바구니에는 1번부터 N번까지 번호가 매겨져 있다. 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 10813번 공 바꾸기는 브론즈 2 난이도의 구현 및 시뮬레이션 문제이다.

 

이 문제에서는 N개의 바구니가 주어지고 각각 바구니들은 1부터 N까지 적혀있다. 그리고 바구니에는 공이 1개씩 들어있고, 처음에는 바구니에 적혀있는 번호와 같은 번호가 적힌 공이 들어있다.

 

이때 M개 줄에 걸쳐서 자연수 i와 j가 주어진따. 이때, i번째 바구니에 들어있는 공을 j번째 바구니에 들어있는 공과 바꾸면 된다. 그리고 마지막에 각각 바구니에 몇 번 공이 들어있는지 출력하면 된다.

 

우선 사이즈가 N+1인 배열을 만들고 인덱스 i는 i번째 바구니를 뜻한다. 그리고 i번째 인덱스를 i로 설정한다.

 

그리고 StringTokenizer를 이용해서 i와 j를 입력받는다. 그리고 arr [i]와 arr [j]를 서로 바꿔주면 된다. 이때 바꿔주기 위해서 새로운 int형 변수 temp를 만들어 arr [i]를 저장한다. arr [i]와 arr [j]를 저장하는 건 다음과 같이 하면 된다.

 

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

 

자세한 코드는 아래에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

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));
        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        int[] arr = new int[n+1];
        for (int i = 1; i <= n; i++) {
                arr[i] = i;
        }
        for (int k = 1; k <= m; k++) {
            st = new StringTokenizer(br.readLine());
            int i = Integer.parseInt(st.nextToken());
            int j = Integer.parseInt(st.nextToken());
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 1; i <= n; i++) {
            sb.append(arr[i] + " ");
        }
        System.out.println(sb);
    }

}

 

 

반응형

댓글