Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python으로 리스트에서 단 한 번만 등장하는 요소 찾기

문제 개요

숫자로 이루어진 리스트 nums가 있다고 가정해 보겠습니다. 이 리스트에서 모든 값은 정확히 세 번씩 등장하지만, 오직 하나의 값만 한 번 나타납니다. 우리의 목표는 바로 이 고유한 값을 찾는 것이며, 추가 메모리 사용량이 입력 크기에 비례하지 않는 상수 공간(constant space) 조건에서 문제를 해결해야 합니다.

예를 들어, 입력이 nums = [3, 3, 3, 8, 4, 4, 4]라면 숫자 3과 4는 각각 세 번 등장하고 8은 한 번만 등장하므로, 결과값은 8이 됩니다.

해결 접근 방식

이 문제는 다음 두 단계로 간단히 해결할 수 있습니다.

  • 리스트에 포함된 서로 다른 값들과 각 값의 빈도수를 저장하는 맵(map)을 생성합니다. Python에서는 collections.Counter를 활용하면 손쉽게 구현할 수 있습니다.

  • 빈도수가 가장 낮은 값을 찾아 반환합니다. 한 번만 등장하는 값이 유일하므로, 최소 빈도를 가진 요소가 곧 정답입니다.

구현 예제

아래 코드를 통해 실제 동작 방식을 확인해 보겠습니다.

from collections import Counter
class Solution:
   def solve(self, nums):
      nums = Counter(nums)
      return min(nums, key=nums.get)
ob = Solution()
nums = [3, 3, 3, 8, 4, 4, 4]
print(ob.solve(nums))

입력

[3, 3, 3, 8, 4, 4, 4]

출력

8

코드 설명

Counter(nums)는 리스트 내 각 값의 등장 횟수를 딕셔너리 형태로 계산합니다. 이후 min() 함수에 key=nums.get을 지정하면, 빈도수를 기준으로 가장 작은 값을 가지는 키, 즉 한 번만 등장한 요소가 반환됩니다. 이 방법은 코드가 매우 간결하고 직관적이라는 장점이 있습니다.