최빈값 구하기 (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