Coding Test/정렬

[TIL] 정렬(백준 1302 파이썬) 2022.01.22

HUR129 2022. 1. 22. 22:38

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

 

1302번: 베스트셀러

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

www.acmicpc.net

 

line = int(input())
book_list={}
for i in range(line):
    book=input()
    if book not in book_list:
        book_list[book]=1 #딕셔너리 시작부분
    else:
        book_list[book]+=1 #있는 key면 그냥 +1씩

max_freq = max(book_list.values())

max_books=[]
for book_name,book_freq in book_list.items():
    if book_freq==max_freq:
        max_books.append(book_name)
max_books.sort()
print(max_books[0])

value 기준으로 정렬하는 operator를 써보려 했지만, 사전순 정렬조건때문에 또다시 해야하기때문에 그냥 for문돌렸으나

 

line = int(input())
book_list={}
for i in range(line):
    book=input()
    if book not in book_list:
        book_list[book]=1 #딕셔너리 시작부분
    else:
        book_list[book]+=1 #있는 key면 그냥 +1씩

book_list = list(book_list.items()) #[('a',2),('b',4)...]

book_list.sort(key=lambda x: (-x[1],x[0]))
print(book_list[0][0])

어제까지의 key:lambda 정렬조건을 사용하면 그럴필요가없다. dictionary를 list로 튜플형식으로 받아오려면 10번줄같이해야한다. 그것이 포인트.

 

정렬 (7/14)