본문으로 건너뛰기
Minsing Log
뒤로 가기

collection에서 counter가 뭐야?

Programming & CS

완주하지 못한 선수를 풀다가…

import collections


def solution(participant, completion):
    answer = collections.Counter(participant) - collections.Counter(completion)
    return list(answer.keys())[0]

남의 코드 예제를 분석하던중 collection모듈의 counter 클래스를 알게 되었다. 도대체 이녀석을 빼고 keys를 통해 리스트로 만들어 인덱스 0에 접근하면 왜 답이 나올까?

Counter란?

사용법

기본

중복된 데이터가 저장된 배열을 인자로 넘기면 각 원소가 몇번씩 나오는지 저장된 객체를 얻게 된다.

>>> Counter(["hi", "hey", "hi", "hi", "hello", "hey"])
Counter({'hi': 3, 'hey': 2, 'hello': 1})

문자열 사용방법은 아래 참고문헌에서 이어서 참조

산술 연산자 활용

위 코드에서 봤던 것이 counter를 산술 연산자로서 사용한 것이다. 덧셈 뺄셈이 가능하다.

counter1 = Counter(["A", "A", "B"])
counter2 = Counter(["A", "B", "B"])

counter1 + counter2
Counter({'A': 3, 'B': 3})

counter1 - counter2
Counter({'A': 1})

뺄샘의 결과로 0이나 음수가 나온 경우에는 최종 카운터 객체에서 제외가 되니 이 부분 주의해서 사용할것! 위 코드는 이 점을 이용해서 완주하지 못한 선수를 색출해냈다.

참고문헌

  1. https://www.daleseo.com/python-collections-counter/
  2. 사진 출처: https://jindabang.tistory.com/9

공개 여정 구독

글이 올라오면 이메일로 보내드릴게요.

개발, 창업, 배움, 실패와 회고를 짧고 솔직하게 기록합니다. 검색으로 스쳐가는 독자가 아니라 여정을 따라오는 팬을 만들기 위한 뉴스레터입니다.

뉴스레터는 준비 중입니다. 그동안 RSS 로 구독하거나 이메일 로 알림을 요청해 주세요.


이 글 공유하기:

댓글

GitHub 계정으로 로그인해 댓글을 남길 수 있습니다.


이전 글
구름 ide expo 설치
다음 글
enumerate()가 뭐야?