김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일을 하고 있음
오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력
입력
첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어짐. 이 값은 1,000보다 작거나 같은 자연수
둘째부터 N개의 줄에 책의 제목이 입력으로 들어옴
책의 제목의 길이는 50보다 작거나 같고, 알파벳 소문자로만 이루어져 있음
출력
첫째 줄에 가장 많이 팔린 책의 제목을 출력
만약 가장 많이 팔린 책이 여러 개일 경우에는 사전 순으로 가장 앞서는 제목을 출력
시간 제한: 2초
메모리 제한: 128 MB
"""
입출력 예시)
(예제 입력 1)
5
top
top
top
top
kimtop
-> top
(예제 입력 2)
9
table
chair
table
table
lamp
door
lamp
table
chair
-> table
(예제 입력 3)
6
a
a
a
b
b
b
-> a
(예제 입력 4)
8
icecream
peanuts
peanuts
chocolate
candy
chocolate
icecream
apple
-> chocolate
(예제 입력 5)
1
soul
-> soul
"""
## 의사코드 ##
# 책별 판매 개수 세기
# from collections import Counter
# cnt = Counter(책 리스트)
# 책 리스트를 사전 순으로 정렬하기 위해 오름차순 정렬
# books.sort()
# 책별 판매 개수를 카운트한 것에서 개수가 가장 많은 것의 제목 출력
# Counter(books).most_common(1)[0][0]
통과한 코드
from collections import Counter
n = int(input())
books = [] # 책 제목을 담을 리스트
for _ in range(n):
books.append(input())
# 책 리스트를 사전 순으로 정렬하기 위해 오름차순 정렬
books.sort()
# 책별 판매 개수를 카운트한 것에서 개수가 가장 많은 것의 제목 출력
print(Counter(books).most_common(1)[0][0])
most_common(): 개수가 많은 순으로 정렬된 튜플 배열 리스트를 반환
most_common(1): 개수가 가장 많은 튜플 1개만 출력
과정 확인
books = ['table', 'chair', 'table', 'table', 'lamp', 'door', 'lamp', 'table', 'chair']
"""
책 리스트: ['table', 'chair', 'table', 'table', 'lamp', 'door', 'lamp', 'table', 'chair']
사전 순으로 정렬된 책 리스트: ['chair', 'chair', 'door', 'lamp', 'lamp', 'table', 'table', 'table', 'table']
책별 판매 개수 카운트: Counter({'table': 4, 'chair': 2, 'lamp': 2, 'door': 1})
most_common(): [('table', 4), ('chair', 2), ('lamp', 2), ('door', 1)]
most_common(1): [('table', 4)]
가장 많이 팔린 책의 제목: table
"""