본문 바로가기

Algorithm Problems/정렬

[백준/Python] 1302번: 베스트셀러

문제

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

 

1302번: 베스트셀러

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

www.acmicpc.net


문제 요약

오늘 팔린 책의 제목을 팔린 만큼 입력 받고, 가장 많이 팔린 책의 제목을 출력한다.

 

+ 가장 많이 팔린 책이 여러 개일 경우에는 사전 순으로 가장 앞서는 제목을 출력한다.


코드

N = int(input())

dic = {}

# 딕셔너리의 Key값에 제목, Value값에 팔린 개수 저장
for _ in range(N):
    book = input()
    if book in dic.keys():
        dic[book] += 1
    else:
        dic[book] = 1

# 딕셔너리를 Key값을 기준으로 오름차순 정렬
dic = dict(sorted(dic.items()))

maxBookTitle = ''
maxBookCount = 0

# 키 값을 하나씩 접근하여 가장 많이 팔린 책 찾기
for book in dic.keys():
    if dic[book] > maxBookCount:
        maxBookCount = dic[book]
        maxBookTitle = book
    
print(maxBookTitle)

코드 설명

1. 팔린 책의 제목과 팔린 개수를 각각 Key, Value값으로 저장하는 딕셔너리 dic를 생성한다.

 

2. 가장 많이 팔린 책이 여러 개일 경우, 사전 순으로 가장 앞서는 제목을 출력해야하기 때문에 먼저 Key값을 기준으로 먼저 오름차순 정렬한다.

 

3. 반복문을 통해 키 값을 하나씩 접근하며 가장 많이 팔린 책을 찾는다.