본문 바로가기
코딩라이브러리/파이썬

파이썬 Counter (with 백준 10815, 10816)

by 유니네 라이브러리 2024. 5. 28.

Counter() 객체

  • 편리하고 빠르게 개수를 세도록 지원하는 계수기 도구 제공
  • collections 모듈의 Counter() 객체 선언하여 사용한다.
    ex) from collections import Counter
from collections import Counter
cnt = Counter()
for word in ['yun', 'Lee', 'yun', 'bang', 'Lee', 'Lee']:
    cnt[word] += 1
print(cnt) # Counter({'Lee': 3, 'yun': 2, 'bang': 1})

words = ['yun', 'Lee', 'yun', 'bang', 'Lee', 'Lee']
cnt1 = Counter(words)
print(cnt1) # Counter({'Lee': 3, 'yun': 2, 'bang': 1})

words = "yuneene shop"
cnt2 = Counter(words)
print(cnt2) # Counter({'e': 3, 'n': 2, 'y': 1, 'u': 1, ' ': 1, 's': 1, 'h': 1, 'o': 1, 'p': 1})

#Counter 주요 추가 매서드
#.most_common(n) : n개의 요소를 index 순으로 가져온다.
print(cnt2.most_common(4)) # [('e', 3), ('n', 2), ('y', 1), ('u', 1)]
#.elements() 개수만큼 반복되는 요소에 대한 이터레이터 반환
print(sorted(cnt2.elements())) # [' ', 'e', 'e', 'e', 'h', 'n', 'n', 'o', 'p', 's', 'u', 'y']
#.total() 총 개수 반환
print(cnt2.total()) # 12

 

▶ Counter() 객체 연습 백준 문제 풀이

https://www.acmicpc.net/problem/10815

import sys
from collections import Counter
N = int(sys.stdin.readline().rstrip())
arrN = list(map(int, sys.stdin.readline().rsplit()))
M = int(sys.stdin.readline().rstrip())
arrM = list(map(int, sys.stdin.readline().rsplit()))

#Counter 객체로 개수 확인
cnt = Counter(arrN) # Counter({6: 1, 3: 1, 2: 1, 10: 1, -10: 1})
#print(cnt)
rtn = ""
for i in arrM:
    if (i in cnt):
        print(1, end=" ")
    else:
        print(0, end=" ")

 

https://www.acmicpc.net/problem/10816

import sys
from collections import Counter
N = int(sys.stdin.readline().rstrip())
arrN = list(map(int, sys.stdin.readline().rsplit()))
M = int(sys.stdin.readline().rstrip())
arrM = list(map(int, sys.stdin.readline().rsplit()))

#Counter 객체로 개수 확인
cnt = Counter(arrN) #Counter({10: 3, 3: 2, -10: 2, 6: 1, 2: 1, 7: 1})
#print(cnt)
rtn = ""
for i in arrM:
    if (i in cnt):
        print(cnt[i],end=" ")
    else:
        print(0, end=" ")

 

☞ 파이썬 자습서 참고 사이트

https://docs.python.org/ko/3/library/collections.html#collections.Counter

 

collections — Container datatypes

Source code: Lib/collections/__init__.py This module implements specialized container datatypes providing alternatives to Python’s general purpose built-in containers, dict, list, set, and tuple.,,...

docs.python.org