리스트에서 특정 원소의 개수를 구하는 방법으로 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를 사용하는 것이 더 효율적
'코딩테스트 tip' 카테고리의 다른 글
| BFS 유형에서 이차원 배열 주의사항 (0) | 2022.11.08 |
|---|---|
| key=lambda를 이용한 2차원 정렬 (0) | 2022.11.01 |
| 자주 쓰이는 math 모듈 메소드 (0) | 2022.10.29 |
| 문자열의 타입 판별 메소드 (0) | 2022.10.24 |
| sum 시간복잡도 (0) | 2022.10.23 |
댓글