문제 풀이

[백준] 10813번: 공 바꾸기 - JAVA (자바)

auyeol 2023. 5. 6. 11:16
728x90

 

 

문제

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

 

10813번: 공 바꾸기

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

www.acmicpc.net

 

N개의 바구니를 입력받고 M번 공을 바꾼다. 이때, 공을 바꿀 바구니 2개를 선택하고 공을 서로 교환되게 하는 문제이다.

 

입력                                    출력
5 4	                                3 1 4 2 5
1 2
3 4
1 4
2 2

 

 

------------------------------------------------------------------------------------------------------------------

 

풀이

 

N개의 바구니와 넣을 횟수를 입력받는다. (int busket, int count)

 

N번째 바구니는 N-1에 위치한 배열 값이므로 바구니의 위치를 입력받는 변수인 n1, n2에 -1을 해주었다.

 

값을 서로 바꾸기 위해서 임시 변수 temp를 선언해 값을 서로 변경해주었다.

 

 

(1) Scanner 사용 

 

import java.util.Scanner;

public class Main {
	public static void main(String[] args){
		Scanner sc = new Scanner(System.in);
		
		int busket = sc.nextInt(); 
		int count = sc.nextInt(); 
		
		int n1, n2, temp = 0; 
		
		int array1[] = new int[busket]; 
		
		for(int i=0;i<array1.length;i++) { 
			array1[i] = i+1; // 바구니 초기 값
		}
		
		for(int i=0;i<count;i++) {
			n1 = sc.nextInt()-1; 
			n2 = sc.nextInt()-1;
			
			temp = array1[n1]; // temp에 'n1번째 바구니 값' 저장
			array1[n1] = array1[n2]; // n1번째 바구니에 'n2번째 바구니 값' 저장
			array1[n2] = temp; // n2번째 바구니에 temp('n1번째 바구니 값')저장
			
		}
		
		sc.close();
		
		for(int i=0;i<array1.length;i++) {
			System.out.print(array1[i]+" ");
		}
		
	}
}

 

 

------------------------------------------------------------------------------------------------------------------

 

(2) BufferdReader 사용 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;


public class Main {
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer strtk = new StringTokenizer(br.readLine()," ");
		
		int basket = Integer.parseInt(strtk.nextToken());
		int count = Integer.parseInt(strtk.nextToken()); 
		
		int n1, n2, temp = 0;
		
		int array1[] = new int[basket];
		
		for(int i=0;i<array1.length;i++) {
			array1[i] = i+1;
		}
		
		for(int i=0;i<count;i++) {
			strtk = new StringTokenizer(br.readLine()," ");
			n1 = Integer.parseInt(strtk.nextToken())-1;
			n2 = Integer.parseInt(strtk.nextToken())-1;
			
			temp = array1[n1];
			array1[n1] = array1[n2];
			array1[n2] = temp;
		}
		
		br.close();
		
		for(int i=0;i<array1.length;i++) {
			System.out.print(array1[i]+" ");
		}
		
	}
}
728x90