[작성일: 2023. 08. 24]
https://www.acmicpc.net/problem/10813
풀이
import java.io.*;
import java.util.StringTokenizer;
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.valueOf(st.nextToken()); // 바구니의 수
int m = Integer.valueOf(st.nextToken()); // 공을 바꿀 횟수
int[] basket = new int[n];
for (int i = 0; i < n; i++) {
basket[i] = i + 1;
}
for (int j = 0; j < m; j++) {
StringTokenizer input = new StringTokenizer(br.readLine());
int start = Integer.valueOf(input.nextToken());
int end = Integer.valueOf(input.nextToken());
int tmp = basket[start - 1];
basket[start - 1] = basket[end - 1];
basket[end - 1] = tmp;
}
for (int k = 0; k < n; k++) {
bw.write(basket[k] + " ");
}
br.close();
bw.flush(); // 버퍼에 남아있는 데이터 모두 출력
bw.close();
}
}
10810번 공 넣기의 심화문제로 10810번은 그냥 같은 공을 넣는 문제였다면 이번에는 공을 바꾸는 문제이다.
현재 바구니에는 바구니의 번호와 같은 공 번호가 들어있다고 했으니 바구니 상태는 [ 1 2 3 4 5 ] 가 된다.
그 다음 몇 번 바구니들끼리 공을 바꿀 것인지 입력을 받으면 되는데 start 바구니와 end 바구니를 선언하고 tmp라는 임시 변수도 선언해준다.
5번과 4번 바구니의 공을 바꿀 때 5번 바구니(basket[4])의 값을 tmp에 옮겨두고, 그 후에 basket[4]에 4번 바구니(basket[3])의 값을 대입해야 한다. 그 다음 basket[3]에 tmp에 있던 값을 넣어주면 공의 위치가 바뀐다.