문제
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. 반복문을 통해 키 값을 하나씩 접근하며 가장 많이 팔린 책을 찾는다.
'Algorithm Problems > 정렬' 카테고리의 다른 글
[백준/C++] 10814번: 나이순 정렬 (1) | 2024.05.03 |
---|---|
[백준/C++] 10989번: 수 정렬하기 3 (1) | 2024.04.28 |
[백준/C++] 11650번: 좌표 정렬하기 (0) | 2024.04.14 |
[백준/python] 8979번: 올림픽 (0) | 2023.07.26 |
[백준/python] 10825번: 국영수 (0) | 2023.07.25 |