[작성일: 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에 있던 값을 넣어주면 공의 위치가 바뀐다.