250x250
Notice
Recent Posts
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
관리 메뉴

일상 코딩

[python] 백준 알고리즘 1302번 베스트셀러, sorted()를 이용한 풀이 본문

코딩테스트/백준 online Judge

[python] 백준 알고리즘 1302번 베스트셀러, sorted()를 이용한 풀이

polarcompass 2021. 11. 13. 09:08
728x90

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

 

1302번: 베스트셀러

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

www.acmicpc.net

N = int(input())
S = dict()

for _ in range(N):
    book = input()
    if book not in S:
        S[book] = 0
    S[book] += 1

print(sorted(list(S.items()), key=lambda x: (-x[1], x[0]))[0][0])

입력 예제

8
icecream
peanuts
peanuts
chocolate
candy
chocolate
icecream
apple

출력 예제

chocolate

여기서 핵심은 sorted() 안의 익명함수 정렬 순서이다.

key = lambda x: (-x[1], x[0])

위 식에서 -x[1]은 튜플의 두번째 자리를 기준으로 먼저 내림차순으로 정렬한다는 의미이고,

x[0]은 숫자가 같을시 앞자리를 기준으로 오름차순으로 정렬하겠다는 의미이다.

어느것을 앞에 배치하겠는지가 중요하고, 결과값이 완전 달라지게 되어있다.

 

참고 사이트

https://zidarn87.tistory.com/25

 

파이썬 리스트, 튜플 정렬하기 - sort(), sorted(), reverse()

파이썬 정렬하기 - sort(), sorted(), reverse() sort() 기본값은 오름차순 정렬이고, reverse옵션 True는 내림차순으로 정렬하게 됩니다. a= [3, 1, 9, 7, 5] a.sort() print(a) [1, 3, 5, 7, 9] a= [3, 1,..

zidarn87.tistory.com

 

728x90