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

파이썬으로 배열에서 고유한 요소의 합 구하기

배열 nums에 중복된 요소와 고유한(한 번만 등장하는) 요소가 섞여 있을 때, nums에 포함된 모든 고유한 요소의 합을 구해야 한다고 가정해 보겠습니다.

예를 들어 입력이 nums = [5,2,1,5,3,1,3,8]이라면 출력은 10이 됩니다. 고유하게 한 번만 등장하는 요소는 2와 8뿐이며, 이들의 합이 10이기 때문입니다.

해결 접근 방법

이 문제는 다음 단계를 따라 해결할 수 있습니다.

  • count := 배열의 각 요소별 등장 횟수를 저장한 딕셔너리 생성
  • ans := 0으로 초기화
  • nums의 각 인덱스 i와 값 v에 대해 반복
    • count[v]가 1과 같다면(즉, 한 번만 등장하는 값이라면) ans에 v를 더함
  • ans 반환

파이썬 예제 코드

아래 구현을 보면 이해가 더 쉬워집니다.

from collections import Counter

def solve(nums):
    count = Counter(nums)
    ans = 0
    for index, value in enumerate(nums):
        if count[value] == 1:
            ans += value
    return ans

nums = [5,2,1,5,3,1,3,8]
print(solve(nums))

입력

[5,2,1,5,3,1,3,8]

출력

10

코드 설명

collections 모듈의 Counter 클래스를 사용하면 리스트 내 각 요소의 등장 횟수를 손쉽게 계산할 수 있습니다. 이후 enumerate()로 배열을 순회하면서 등장 횟수가 정확히 1인 요소만 결과값에 누적합니다. 전체 시간 복잡도는 O(n)으로 매우 효율적이며, 배열의 크기가 커져도 안정적으로 동작합니다.