문제설명
소스코드
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가 승리한다.
참고
https://librewiki.net/wiki/%ED%95%84%EC%8A%B9_%EC%A0%84%EB%9E%B5_%EA%B2%8C%EC%9E%84
'자료구조 & 알고리즘 > BOJ' 카테고리의 다른 글
[Java] 백준 1935번 문제 (후위 표기식2) (0) | 2023.10.17 |
---|---|
[Java] 백준 11869번 문제 (님블) (1) | 2023.10.05 |
[Java] 백준 1252번 문제 (이진수 덧셈) (0) | 2023.10.03 |
[Java] 백준 1015번 문제 (수열 정렬) (0) | 2023.10.02 |
[Java] 백준 1417번 문제 (국회의원 선거) (0) | 2023.10.01 |