최빈값 구하기 (Collections.Counter 클래스)
2022. 2. 6. 16:54ㆍ파이썬/알고리즘
최빈값 구하기
10개의 숫자를 입력 받아 그 중에 가장 많이 등장한 값을 구해라.
입력 :

from collections import Counter
import sys
input=sys.stdin.readline
arr = [int(input()) for _ in range(10)]
print(Counter(arr).most_common()[0][0])
collections 라이브러리의 Counter 클래스 이용하기
arr을 Counter 객체로 바꾼 뒤 most_common() 함수를 이용하면 사용할 수 있다.
함수의 return 값은 튜플에 담긴 리스트로 아래와 같이 반환이 된다.

등장한 횟수 기준으로 내림차순으로 정렬이 되어 나오니까 [0][0]의 index가 최빈값이다.
실습
1157번: 단어 공부
알파벳 대소문자로 된 단어가 주어지면, 이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오. 단, 대문자와 소문자를 구분하지 않는다.
www.acmicpc.net
from collections import Counter
import sys
input=sys.stdin.readline
word = input().rstrip().upper()
word_count = Counter(word).most_common()
num_count= [word_count[i][1] for i in range(len(word_count))]
if num_count.count(max(num_count)) >= 2:
print('?')
else :
print(word_count[0][0])
key :
문제를 먼저 풀어보지 않고 정답을 보면 이해할 수 없다.
이 문제에서 핵심은 가장 많이 등장한 횟수가 2번 이상일 경우이다.
횟수를 저장한 배열의 가장 큰 숫자를 구하고 그 숫자가 2번 이상 등장할 경우 '?'를 print 해주는 것!
반응형
'파이썬 > 알고리즘' 카테고리의 다른 글
| 백준 1463 : 1로 만들기 (0) | 2022.02.10 |
|---|---|
| BOJ : 10992 번 별 찍기 -17 (0) | 2022.02.09 |
| 백준 10825 국영수 정렬 문제 (sorted) (0) | 2022.02.04 |
| 최소힙 (0) | 2022.01.25 |
| 구현 : 문자열 압축 (0) | 2022.01.05 |