Codility Lesson 2-2. OddOccurrencesInArray (python)

zioo·2022년 6월 29일
0
post-custom-banner

codility lesson

처음에는 반복문을 통해 짝이 없는 것을 찾으려고 했는데 효율성이 안좋았다.

# 시간 복잡도가 안좋았다. 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를 사용하는 방법은 생각지도 못했다.

어쨋든 다음 포스팅으로 넘어가보도록 하자

post-custom-banner

0개의 댓글