코딩테스트 tip

count()와 Counter()

Mecodata 2022. 10. 31. 22:30

리스트에서 특정 원소의 개수를 구하는 방법으로 Python의 기본 메소드인 count()를 이용하는 방법과 Collections 모듈의 Counter를 이용하는 방법이 있다.

 

count()

- 시간복잡도 O(N)이고 보통 for문을 이용하여 리스트의 각 원소의 개수를 파악하기 때문에 O(N^2)의 시간복잡도

 

Counter

- from Collections import Counter로 따로 import 해줘야함

- 리스트를 전체적으로 한번에 싹 훓고 딕셔너리 형태로 각 원소의 개수를 반환하기 때문에 O(N)의 시간복잡도

- 서로 같은 key를 갖고 있다면 Counter 간의 연산 가능 (만약 전체적으로 큰 Counter로 작은 Counter를 빼면 빈값 반환)

- Counter()를 적용하여 결과값을 도출하면 데이터 타입이 Counter이기 때문에 활용을 위해서는  Counter().most_common()으로 리스트로 반환하던가 결과값을 list나 dict를 이용하여 타입을 변환해줘야

- Counter().most_common() = (원소, 원소의 개수) 형식의 튜플 원소의 개수가 높은 순으로 담겨있는 리스트로 반환

 

★ 따라서 count를 여러번해야 하는 경우에는 Counter를 사용하는 것이 더 효율적