[백준] #1302 베스트셀러 python

2023. 3. 27. 18:00

https://www.acmicpc.net/problem/1302

 

1302번: 베스트셀러

첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어진다. 이 값은 1,000보다 작거나 같은 자연수이다. 둘째부터 N개의 줄에 책의 제목이 입력으로 들어온다. 책의 제목의 길이는 50보다 작거나 같고

www.acmicpc.net

 

📕 설명 📕

 

python의 Counter library를 사용하여 풀이했다.

 

book_str list에 해당 문자열들을 넣고, 해당 문자열들에 대한 가장 많이 팔린 책들의 값을 most_sold_count에,

 

most_sold_book_list에 most_sold_count 값을 가지는 문자열이 여러 개가 있을 경우를 감안하여 list로 생성하여 반영하였다.

 

그리고 iteration을 통해서 풀이를 완료하였다.

 

사실, for 문에 Counter의 most_common(n=?) 로 설정하려고 하였지만, 예제 case에 모두 같은 경우로 most_sold_count이 같은 문자열이 많은 경우를 감안하여 넣지 않았다.

 

출력은 정렬을 통해 뽑아내었다. 

 

🧑🏻‍💻 나의 풀이 🧑🏻‍💻

 

from collections import Counter
book_str = [input() for _ in range(int(input()))]

# Iterate through counted values through Counter library.
most_sold_book_list = []
most_sold_count = Counter(book_str).most_common(n=1)[0][1]
for book_name in Counter(book_str):
    if most_sold_count == Counter(book_str)[book_name]:
        most_sold_book_list.append(book_name)
        most_sold_count = Counter(book_str)[book_name]
print(sorted(most_sold_book_list)[0])

 

BELATED ARTICLES

more