본문 바로가기

백준 문풀

(파이썬) 백준 2108번 최빈값 구하기 : counter 모듈을 활용한 시간초과 극복

>> 문제

 

=> 문제는 최빈값에서 발생했다.

=> 코드가 길어지니 시간초과가 뜨기 시작한것

 

=> 따라서 counter 모듈을 통해 시간 초과를 극복하고자 했다.

 

 

참고 : https://www.daleseo.com/python-collections-counter/

 

파이썬 collections 모듈의 Counter 사용법

Engineering Blog by Dale Seo

www.daleseo.com

 

 

 

 

 

 

 

 

#collections 모듈의 counter 기능

상황 :  각 데이터가 몇번 저장되어있는지를 계산할 때

=> 어떤 데이터가 몇 번 등장하는지를 계산

 

# 기본 사용법

from collections import Counter

 

Counter(배열)

=> 배열 각 요소의 데이터가 몇번 등장하는지를 사전처럼 저장

 


 

 

 

 

 

 

#가장 흔한 데이터 찾기 : most_common 메서드

=> 가장 많이 나온 인자부터 튜플 리스트로 반환

=> most_common(n) : 가장 많이 나온 순으로 n개를 반환하라


 

 

 

 

 

>> 최종코드 : 최빈값 구하기(최빈값이 여러개일 때 뒤에서 두번째 값 출력)

if ) 만약 숫자가 2개 이상 있다면

1단계 : Counter 메소드 => 가장 많이 등장한 2개 숫자를 순서대로 튜플리스트에 저장

2-1단계 : 만약 2개 숫자의 빈도가 같다면 => 앞에서 두번째(두번째로 작은 수) 출력

2-2단계 : 만약 2개 숫자의 빈도가 다르다면 => 가장 많이 등장한 첫번째 수 출력

 

 

else) 만약 숫자가 1개밖에 없다면

=> 그냥 그 숫자 출력