문제설명

 

소스코드

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main
{
	public static void main(String[] args) throws Exception 
	{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine());
		int xor = Integer.parseInt(st.nextToken());
		for (int i = 1; i < N; ++i) xor = xor ^ Integer.parseInt(st.nextToken()); // 기존 xor값과 새로 들어온 수의 XOR연산 값을 저장
		if(xor != 0) System.out.println("koosaga");
		else System.out.println("cubelover");
	}
}

 

설명

  • 동전의 개수가 3이라 가정하고, 각 동전이 있는 칸번호가 1, 2, 3 이라면
    1을 이진수로 변환하면 0001
    2를 이진수로 변환하면 0010
    3을 이진수로 변환하면 0011
  • 1, 2, 3의 이진수 값을 XOR한다.
    0001 XOR 0010 = 0011(= 1 XOR 2)
    0011 XOR 0011 = 0000(= 1 XOR 2 XOR 3)
    첫 시작은 koosaga이므로 각 동전의 칸 번호 XOR 값이 0(이진수로 0000)이면 cubelover가 승리하고, 0이 아니면 koosaga가 승리한다.

참고

2023.10.05 - [백준] - [Java] 백준 11868번 문제 (님 게임2)

 

[Java] 백준 11868번 문제 (님 게임2)

문제설명 소스코드 import java.io.BufferedReader; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { public static void main(String[] args) throws Exception { BufferedReader br = new BufferedReader(new InputStrea

rebugs.tistory.com