[TIL] 내가 잘 안 써서 모르는 파이썬 자료구조 Counter 정리

ssook·2023년 11월 17일
0

TIL

목록 보기
14/17
post-thumbnail

Counter

파이썬 내장 라이브러리인 collections 모듈에 포함된 클래스로, 반복 가능(Iterable)한 객체들의 요소 개수를 셀 때 사용함.
주로 리스트, 튜플, 문자열 등과 같은 iterable한 자료구조 요소들의 개수를 쉽게 파악하는 데 사용.

아래는 Counter를 사용한 간략한 예제임.

from collections import Counter

my_list = [1, 2, 3, 1, 2, 3, 4, 5, 1, 2]
counter = Counter(my_list)

print(counter)

출력 값은 아래와 같음.
Counter({1: 3, 2: 3, 3: 2, 4: 1, 5: 1})

딕셔너리가 안에 담겨 나오는 것을 확인 가능함.
즉, 이와 같은 작업을 파이썬 딕셔너리에서도 동일하게 할 수 있음.

다만, Counter를 사용하는 것이 코드가 딕셔너리를 쓰는 것보다 간결하고 직관적이며 내부적으로 최적화되어 있기에 시간복잡도 같은 성능 면에서도 우수함. (실제로 백준 풀 때 같은 로직으로 한 딕셔너리는 시간초과가 나지만 Counter는 안 나는 경우가 있음)

얼마나 딕셔너리와 카운터가 차이나느냐?

Counter의 내부 구현은 C로 작성되어 있어서, 내부적으로는 해시 테이블과 같은 자료구조를 사용하며, 따라서 일반적으로 O(n)의 시간 복잡도를 갖게 됨.
반면에 딕셔너리를 직접 사용하는 경우에는 같은 작업이 O(n^2)의 시간 복잡도를 갖게 될 수 있음.

또한 Counter는 다양한 집합 연산 같은 추가적인 기능을 제공함.

정리해보고 나서 알았는데...
앞으로는 Counter를 문제 풀 더 애용해야겠음...^^

profile
개발자에서, IT Business 담당자로. BrSE 업무를 수행하고 있습니다.

0개의 댓글

관련 채용 정보