[백준] 베스트셀러

SUN·2023년 6월 27일
0

백준

목록 보기
5/15
post-thumbnail

베스트셀러

베스트셀러

문제

김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다.

오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오.

입력

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

출력

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

문제 풀이

import sys

N = int(sys.stdin.readline())
b = dict()

for i in range(0,N):
    book = str(sys.stdin.readline())
    if book in b:
        b[book] += 1
    else:
        b[book] = 1

max = max(b.values())
ans = []
for key, value in b.items():
    if max == value:
        ans.append(key)

ans = sorted(ans) # 여러개일경우 사전순으로 가장 앞에있는 제목 == 정렬하기
print(ans[0])

book 이름을 입력받고 b라는 딕셔너리에 해당 책이름이 있다면 +1 해주고 없다면 1로 넣어준다.

b값들에서 value의 최댓값을 추출하고
딕셔너리 b에서 max 값과 같은 value를 가진 key값을 새로운 배열에 저장한다.

max 값이 여러개일 경우 사전순으로 가장 앞에있는 제목의 책을 출력한다고하니
ans라는 배열을 정렬해주고 해당 배열의 0번 인덱스를 출력한다.

0개의 댓글