白駿Baekjoon 1547号ボール-JAVA


https://www.acmicpc.net/problem/1547
質問する
勢俊は三つのコップを一列に机の上に倒した.コップの番号は一番左のコップから1番、2番、3番の順で、勢俊はこのコップでゲームをします.
まず1番のコップの下にボールを置きます.勢俊は2杯選んで、位置を合わせた.例えば、選択したコップが1番と2番の場合、1番のコップがある位置で2番のコップを移動し、2番のコップがある位置で1番のコップを移動する必要があります.この時点でボールが動かないので、ボールの位置は最初の1番カップの位置と同じです.
勢俊はカップの位置を全部でM回に変え、カップの位置を変える方法を入力とします.位置をM番に変更したら、ボールがあるコップの番号を取得するプログラムを作成してください.
入力
1行目において、カップの位置変化回数Mは、50の自然数以下である.2行目から、M行は、X号カップとY号カップの位置を交換することを意味するカップの位置を変更する方法XとYを与える.XとYの値は3以下であってもよく、XとYは同じであってもよい.
カップを移動した後、ボールがカップの外にある場合はありません.
しゅつりょく
1行目のボールがあるカップの番号を出力します.ボールがコップの底に消えない場合は、-1を出力します.
入力例1
4
3 1
2 3
3 1
3 2
サンプル出力1
3
入力例2
2
1 2
3 1
サンプル出力2
2
入力例3
5
2 3
1 3
2 3
2 1
3 1
**サンプル出力3
3
入力例4
9
1 2
3 2
1 2
2 1
2 1
3 2
1 3
3 1
1 2
サンプル出力4
1
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int loop = Integer.parseInt(scan.nextLine());
		int num = 1;
		
		for (int i = 0; i < loop; i++) {
			String str[] = scan.nextLine().split(" ");
			int x = Integer.parseInt(str[0]);
			int y = Integer.parseInt(str[1]);
			if (x == num) {
				num = y;
			} else if (y == num) {
				num = x;
			}
		}
		System.out.println(num);
	}
}
  • 説明
  • 球の立場から考えると、簡単に解決できます.