알고리즘

[python] XOR 문제 해결

Alan_Kim 2025. 4. 12. 13:38
728x90
반응형

 

XOR이란 무엇인가?

음이 아닌 정수는 항상 이진법으로 유일하게 표현할 수 있다.

이때, 각 자리 숫자는  또는 이며, 2의 k승 숫자를 k번째 비트라고 한다.

 

XOR은 기호로 '^'방식으로 나타내며 임의의 두 수 x, y가 이진수로 나타냈을 때 k번 비트가 같다면 0, 다르면 1을 부여해서 결과를 얻는다.

 

예시로

xor = 0
nums = [3, 5, 2]

for num in nums:
    xor ^= num

다음과 같은 코드를 짜게 된다면 아래와 같이 동작한다.

xor = 0 ^ 3 = 3 # 00(2) ^ 11(2) = 11(2) 모든 자리 숫자가 다르므로 모든 자리 숫자 1
xor = 3 ^ 5 = 6 # 011(2) ^ 101(2) = 110(2) 1번,2번 비트 숫자가 다른 반면 3번 비트 숫자가 같으므로 110(2)
xor = 6 ^ 2 = 4 # 110(2) ^ 010(2) = 100(2) 1번 비트 숫자가 다르고 2,3번 비트 숫자가 같으므로 110(2)

 

728x90
반응형