Leetcode Java Chalkboard XOR Game
업데이트:
문제
코드
class Solution {
public boolean xorGame(int[] nums) {
int n = 0;
for (int num : nums) {
n ^= num;
}
return n == 0 || nums.length % 2 == 0;
}
}
결과
설명
-
엘리스와 밥이 순차적으로 nums 내 임의 숫자를 제거하고 남은 숫자들의 XOR 비트 연산을 수행하다가 밥이 0이 되어 엘리스가 이기는 게임인지 검증하는 문제이다.
-
n은 XOR 비트 연산을 수행한 결과를 저장할 변수로, 0으로 초기화한다.
- nums의 모든 숫자들을 num에 넣어 아래를 반복한다.
- n에 n과 num의 XOR 비트 연산의 결과를 넣어준다.
- n이 0이거나 nums의 길이가 짝수이면 true를, 아니면 false를 주어진 문제의 결과로 반환한다.
- 상대가 지게 만드는 경우는, 다음 턴에 nums의 길이가 홀수인 동일 숫자들을 남기는 것이다.
- 아래의 두 경우를 합치면 밥이 어떤 선택을 하던지 엘리스는 반드시 지지 않는 선택을 하여 이길 수 있다.
- nums 내 모든 숫자들이 같지 않다면, 상대는 절대 지지않는 숫자를 지울 수 있다.
- 숫자가 모두 같으며 nums 내 숫자의 개수가 짝수인 경우, 상대가 이기게 된다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기