파이썬에서 iterable 객체의 특정 요소 빈도 알아보기

2022. 2. 21. 17:05파이썬/알고리즘

실습

위 문제를 통해 알아보자.

 

11652번: 카드

준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준규가 가지고 있는 카드가 주어졌을 때, 가장 많이 가지

www.acmicpc.net

이 문제를 푸는 방법은 직접 구현하는 방법과 collections 모듈의 Counter 클래스를 이용한 방법이 있다.

가장 간단하게 사용하는 방법으로 Counter만을 소개하겠다.

#카드 N개 수의 범위는 -2의 62승에서 2의 62승
#가장 많이 가지고 있는 정수를 구하라. 여러 가지라면 작은 것을 출력
import sys
from collections import Counter

input = sys.stdin.readline

arr = [int(input()) for _ in range(int(input()))]
counter = dict(Counter(sorted(arr))) # sort를 해주어야 순서대로 정렬되어서 빈도 수가 같을 경우 작은 것을 먼저 출력한다.
print(max(counter,key=counter.get)) # counter.get을 해주면 value 값을 기준으로 가장 큰 값을 찾아준다.

Counter class에 iterable 객체를 담아주면 dict와 유사하게 key값과 빈도수로 이루어진 Counter 객체를 반환한다.

이를 max 함수로 바로 찾을 수 있다.

반응형