[BOJ] 10813 JAVA

Organ·2023년 9월 6일
0

[문제 풀이]

목록 보기
24/123

공 바꾸기

문제

입력 및 출력

예제

내 풀이

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


public class Main {
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N,M;

		StringTokenizer st = new StringTokenizer(br.readLine());

		N = Integer.parseInt(st.nextToken());
		M = Integer.parseInt(st.nextToken());

		int[] arr = new int[N];		
		for(int i = 0; i < N; i++)     // 1부터 시작한다.
			arr[i] = i + 1;

		for(int z = 0; z < M; z++)
		{
			StringTokenizer st1 = new StringTokenizer(br.readLine());
			int i = Integer.parseInt(st1.nextToken()) - 1;
			int j = Integer.parseInt(st1.nextToken()) - 1;

			//System.out.printf("%d  %d\n", i, j);
			if (i != j) // 숫자가 같은 경우 비트연산자 swap하면 0이 된다
			{
				arr[i] = arr[i]^arr[j];
				arr[j] = arr[j]^arr[i];
				arr[i] = arr[i]^arr[j];
			}
		}

		for(int i = 0; i < arr.length; i++)
			System.out.printf("%d ", arr[i]);

	}
}

정리

비트연선자로 swap연산을 하게 되는 경우 굉장히 빠르지만 같은 숫자끼리 바뀔 경우에 0이 된다.

0개의 댓글