[백준/Python] 10816 숫자 카드 2


풀이 코드 및 설명
import sys
from collections import Counter
n = int(sys.stdin.readline())
n_arr = list(map(int, sys.stdin.readline().split()))
m = int(sys.stdin.readline())
m_arr = list(map(int, sys.stdin.readline().split()))
# 상근이가 가진 카드에 대한 각 숫자의 출현 횟수 세기
counter = Counter(n_arr)
# 각 숫자가 몇 개 있는지 출력
for num in m_arr:
print(counter[num], end=' ')
- Counter(n_arr) 는 n_arr 내의 각 숫자가 몇 번 나타났는지 계산
- for num in m_arr 루프를 사용하여 m_arr 에 있는 각 숫자에 대해 n_arr 에서 해당 숫자가 몇 번 나타나는 지 counter 딕셔너리를 통해 조회한다.
- print(counter[num], end= '')를 통해 해당 숫자의 출현 횟수를 출력한다.
collections.Counter
collections 모듈에 있는 특별한 클래스로 주로 해시 가능한 객체의 개수를 계산하는 데 사용된다. 이 클래스는 개체들의 출현 횟수를 딕셔너리 형태로 관리한다. 각 개체를 딕셔너리의 키로 사용하고 해당 객체의 출연 횟수를 딕셔너리의 값으로 저장한다.
Counter의 주요 특징과 기능
- 객체 출현 횟수 계산
- 딕셔너리와 유사한 구조 : keys(), values(), items() 등 딕셔너리 메소드를 사용할 수 있다.
- 사용 예시
- Counter([1,2,3,3,3]) 은 {1 : 1, 2 : 2, 3 : 3} 과 같은 결과를 반환한다.
- 주요 메소드
- most_common([n]) : 가장 흔한 요소들을 카운트 순으로 반환한다. n을 지정하면 가장 흔한 상위 n개 요소를 반환한다.
- elements() : 카운트에 따라 요소들을 반복 가능한 형태로 반환한다.