문제
https://www.acmicpc.net/problem/1302
Algorithm
같은 책을 입력 받으면 책의 개수를 +1 해주어야 하기 때문에 딕셔너리를 사용해야겠다고 생각했다.
책을 입력받으면 딕셔너리 D에 저장하는데, 처음 저장되는 경우에는 D[책이름] = 1로 만들어준다. 그 외에는 D[책이름]+=1을 해준다.
입력이 끝나면 arr라는 리스트에 딕셔너리 D의 items()값을 넣어준다. arr = [[책이름, 개수], ...] 이렇게 저장이 된다,
가장 많이 팔린 책이 여러개인 경우에는 사전순으로 가장 앞서는 제목을 출력하면 되므로 arr를 정렬해주는데, 먼저 개수가 큰 것부터 정렬하고, 그 다음은 책이름을 사전순으로 정렬하기 위해 sort(key = lambda x:(-x[1],x[0])으로 해준다.
arr의 가장 앞에 있는 원소에서 책이름을 출력해야 하므로 arr[0][0]을 출력해주면 된다.
Code
input = __import__('sys').stdin.readline
n = int(input())
D = {}
for i in range(n):
t = input().strip()
if t in D:
D[t] +=1
else:
D[t]=1
arr = list(D.items())
arr.sort(key = lambda x:(-x[1],x[0]))
print(arr[0][0])
'Koala - 10기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/Python] #2563 색종이 (0) | 2023.03.17 |
---|---|
[백준/C++] 2511: 카드놀이 (0) | 2023.03.17 |
[백준/Python] 20540:연길이의 이상형 (0) | 2023.03.12 |
[백준/JAVA] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2023.03.12 |
[백준/Python] 2839번 : 설탕 배달 (0) | 2023.03.09 |