본문 바로가기
개발/알고리즘 문제

[Codility] OddOccurrencesInArray

by 유다110 2017. 11. 2.
반응형

0. 문제

1개 이상의 숫자가 들어있는 리스트 A가 주어진다.

여기 리스트 A에서는 모든 아이템들이 2개, 혹은 4개, 6개 이렇게 짝수 개의 짝을 이루고 있다. 딱 하나만 빼고.

예를 들자면 이렇다.

A = [1, 9, 6, 3, 3, 1, 7, 6, 9]

여기서 짝이 없는 하나의 숫자를 찾아 리턴해야 한다.


1. 답변

꽤 빠르게 짰는데,

처음엔 리스트 A를 set으로 중복 제거하고,

이 set을 for loop로 돌려 A.count(num) 이런 식으로 리스트 A 내의 숫자를 카운트하게 했는데...

너무 느려서 performance에서 점수 깎임.


검색해보니 sorted(리스트) 이 함수가 정말 빠르다고 해서 사용했다.

아이템이 짝수이거나 리스트의 길이가 1인 경우 등의 예외사항을 모두 try/except 로 한번에 처리했는데,

실제 업무를 할 때엔 이렇게 막무가내로 하지 않는다...믿어줘...

def solution(A):
    A = sorted(A)
    for i in range(0, len(A), 2):
        try:
            if A[i] == A[i+1]:
                pass
            else:
                return A[i]
        except:
            return A[i]


반응형

댓글