이 글에서는 주어진 리스트에서 홀수 번 등장하는 숫자를 찾는 방법을 알아봅니다. 여기서는 Python의 lambda 표현식과 reduce 함수를 반드시 활용해야 합니다.
reduce 함수에 람다 표현식을 적용해 리스트의 모든 요소를 누적 처리하면, 짝수 번 등장한 요소는 서로 상쇄되고 홀수 번 등장한 요소만 최종적으로 남게 됩니다.
XOR 연산의 원리
이 기법의 핵심은 배타적 논리합(XOR, ^) 연산입니다. XOR은 같은 값을 두 번 연산하면 0이 되고, 어떤 값과 0을 XOR하면 그 값 자신이 됩니다. 따라서 짝수 번 등장한 요소는 모두 0으로 상쇄되며, 홀수 번 등장한 요소만 결과로 남습니다.
예제 코드
from functools import reduce
def oddcount(i):
print(reduce(lambda x, y: x ^ y, i))
listA = [12, 34, 12, 12, 34]
print("Given list:\n", listA)
print("The element present odd number of times:")
oddcount(listA)
실행 결과
위 코드를 실행하면 다음과 같은 결과가 출력됩니다.
Given list: [12, 34, 12, 12, 34] The element present odd number of times: 12
리스트 [12, 34, 12, 12, 34]에서 12는 세 번, 34는 두 번 등장합니다. 따라서 홀수 번 등장하는 유일한 요소인 12가 최종 결과로 출력됩니다. 이처럼 람다 표현식과 reduce 함수를 조합하면 별도의 반복문 없이 간결하게 문제를 해결할 수 있습니다.