처음에는 반복문을 통해 짝이 없는 것을 찾으려고 했는데 효율성이 안좋았다.
# 시간 복잡도가 안좋았다. O(n^2)
def solution(A):
# write your code in Python 3.6
compare = []
for i in A:
if i not in compare:
compare.append(i)
else:
del compare[compare.index(i)]
print(compare)
return int(compare[0])
다른 사람의 풀이를 찾아보니 비트연산자 xor
^
을 사용했다.
[ 비트 연산자 구하는 법]
2진법 비교로 같은 숫자면 -> 0, 다른 숫자면 -> 1 로 변환해 주는 비트연산자로
짝이 없는 것을 찾을 수 있었다.
왜냐하면 A가 같은 숫자일 때 A xor A = 0
이기 때문이다.
그리고 B xor 0 = B
이다
def solution(A):
# write your code in Python 3.6
result = 0
for i in A:
result ^= i
return result
비트 연산자를 이용하면 너무 간단하게 풀 수 있는 문제였다..
맨 처음 풀 때는 xor를 사용하는 방법은 생각지도 못했다.
어쨋든 다음 포스팅으로 넘어가보도록 하자