파이썬에서 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 함수로 바로 찾을 수 있다.
반응형
'파이썬 > 알고리즘' 카테고리의 다른 글
| 공간 복잡도, 시간 복잡도 (작성 중) (0) | 2022.04.09 |
|---|---|
| 백준 1260 : DFS와 BFS (0) | 2022.02.26 |
| 파이썬으로 계수 정렬 사용해보기 (0) | 2022.02.21 |
| 파이썬에서 튜플로 구성된 리스트 정렬할 때 (0) | 2022.02.20 |
| 백준 11053 : 가장 긴 증가하는 부분 수열 (0) | 2022.02.16 |