본문 바로가기

알고리즘/백준

[백준] 10813 - 공 바꾸기

반응형

10813번 문제

 

1. Scanner를 이용한 방법

import java.util.*;

public class Main{
    public static void main(String[] args){

        Scanner sc = new Scanner(System.in);

        //바구니 총 개수
        int N = sc.nextInt();

        //공을 바꾸는 횟수
        int M = sc.nextInt();

        int[] num = new int[N];

        //바구니에 공이 1개씩 들어있음
        for(int t=0; t<num.length; t++){
            num[t] = t+1;
        }

        //M개의 줄에 걸쳐 교환할 방법
        for(int i=0; i<M; i++){

            //i번 바구니와 j번 바구니
            int I = sc.nextInt();
            int J = sc.nextInt();

            //temp는 변수값을 바꿔주기 위해 사용하는 변수
            //바구니의 공 교환
            //인덱스는 0부터이므로 -1
            int temp = num[I-1];
            num[I-1] = num[J-1];
            num[J-1] = temp;
            
        }
        for(int k=0; k<num.length; k++){
            System.out.print(num[k] + " ");
        }
        sc.close();
    }
}

 

2. BufferedReader를 이용한 방법

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
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[] num = new int[N];

        //바구니에 공이 1개씩 들어있음
        for(int t=0; t<num.length; t++){
            num[t] = t+1;
        }

        //M개의 줄에 걸쳐 교환할 방법
        for(int i=0; i<M; i++){
            StringTokenizer st2 = new StringTokenizer(br.readLine(), " ");
            //i번 바구니와 j번 바구니
            int I = Integer.parseInt(st2.nextToken());
            int J = Integer.parseInt(st2.nextToken());

            //temp는 변수값을 바꿔주기 위해 사용하는 변수
            //바구니의 공 교환
            //인덱스는 0부터이므로 -1
            int temp = num[I-1];
            num[I-1] = num[J-1];
            num[J-1] = temp;
            
        }
        for(int k=0; k<num.length; k++){
            System.out.print(num[k] + " ");
        }
        br.close();
    }
}

처음에는 I 바구니와 J 바구니의 공을 교환하는 걸 단순히 그냥 num[I-1] = num[J-1]; 이렇게 했었는데,

방법을 찾아보니 따로 temp라는 임의의 변수를 만들어서 거기에 넣었다가 옮기는 방식으로 공을 교환하면 된다.

 

 


단계가 올라갈수록 어려워지니 문제 푸는 게 힘들어지기 시작했다ㅠ 그래도 꾸준히 해나가보려고 한다....

반응형

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 3052 - 나머지  (0) 2024.02.18
[백준] 5597 - 과제 안 내신 분..?  (0) 2024.02.17
[백준] 10810 - 공 넣기  (0) 2024.02.15
[백준] 2562 - 최댓값  (0) 2024.02.14
[백준] 10818 - 최소, 최대  (0) 2024.02.13