BOJ/문자열 (해시,맵)

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

JWonK 2021. 9. 14. 22:01
728x90
반응형

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

 

1302번: 베스트셀러

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

www.acmicpc.net

파이썬에서 조건에 따른 정렬을 할 때 lambda를 사용하는데 그것과 관련된 문제이다.

가장 높은 우선순위를 팔린 책의 수로 두고, 팔린 책의 수가 같다면 사전순으로 정렬하는 문제이다.

 

나는 딕셔너리를 이용해 "책 제목 : 팔린 책의 수"로 설정하고, 모든 입력이 끝나면 딕셔너리를 리스트로 형변환 시켜주었다. 그리고 리스트를 lambda를 이용해 우선순위에 따른 정렬을 해주었다.

 

import sys
from collections import *

Information = defaultdict()
N = int(input())
for i in range(N):
    name = input()
    if name in Information:
        Information[name] += 1
    else:
        Information[name] = 1

answer = sorted(Information.items(), reverse = True)
answer.sort(key=lambda x:(-x[1], x[0]))
print(answer[0][0])

 

728x90
반응형