[백준 1302] 베스트셀러
Counter 객체를 활용해보는 문제입니다.
Counter 객체는 list나 set, 혹은 문자열 등을 인자로 입력하면
각 요소를 key로 하여 개수를 계산해 dictionary로 반환합니다.
사용할 때에는 collections 모듈에서 Counter를 import하여 사용합니다.
또한, Counter 객체에서 가장 빈도 수가 높은 요소를 추출해내기 위해서
most_common() 함수를 사용할 수 있습니다.
most_common(n)과 같이 함수 인자에 숫자를 넣게 되면
최빈값 n개를 리스트에 담긴 튜플 형태로 반환합니다.
다음의 예시를 보면 이해에 도움이 됩니다.
>>>from collections import Counter
>>>a = [1,1,1,2,2,3,4]
>>>b = Counter(a)
>>>b
Counter({1: 3, 2: 2, 3: 1, 4: 1})
>>>b.most_common(2)
[(1, 3),(2, 2)]
따라서 book이라는 하나의 list를 만들어서 총 N번 동안 입력되는 책의 이름들을 append해놓습니다.
그런 다음, Counter 객체와 most_common()을 사용하여 ans라는 변수에 할당합니다.
이때, 빈도 수가 동일한 요소들의 경우에는 사전 순으로 출력하라는 조건이 있으므로
sort() 함수를 사용하여 정렬합니다.
참고로, sort() 함수에 key를 설정해주면 그 key를 기준으로 삼아 리스트의 요소들을 정렬할 수 있습니다.
key에는 원하는 정렬 함수를 설정해줄 수 있는데, 보통 lambda 함수를 많이들 사용하여 간편하게 작성합니다.
(ex> sort(key=lambda x:x[0])은 리스트의 요소들 중 인덱스 0인 요소들을 기준으로 정렬합니다.)
또한, 조건 기준이 여러개일 때에는 기준들을 괄호로 묶어 설정하며,
앞에 ‘-‘를 붙이면 내림차순으로 정렬한다는 것을 의미합니다.
정렬까지 모두 끝낸 후에 각 요소들 안에 들어있는 첫 번째 요소들을 차례로 출력하면 됩니다.
문제 : 백준 1302 - 베스트셀러