문제설명
소스코드
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)
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 1918번 문제 (후위 표기식) (0) | 2023.10.18 |
---|---|
[Java] 백준 1935번 문제 (후위 표기식2) (0) | 2023.10.17 |
[Java] 백준 11868번 문제 (님 게임2) (1) | 2023.10.05 |
[Java] 백준 1252번 문제 (이진수 덧셈) (0) | 2023.10.03 |
[Java] 백준 1015번 문제 (수열 정렬) (0) | 2023.10.02 |