새소식

⌨️ Algorithms/백준

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

2023. 2. 28. 22:56

  • -

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

 

1302번: 베스트셀러

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

www.acmicpc.net

 

  • 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일을 하고 있음
  • 오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력
  • 입력
    • 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N이 주어짐. 이 값은 1,000보다 작거나 같은 자연수
    • 둘째부터 N개의 줄에 책의 제목이 입력으로 들어옴
    • 책의 제목의 길이는 50보다 작거나 같고, 알파벳 소문자로만 이루어져 있음
  • 출력
    • 첫째 줄에 가장 많이 팔린 책의 제목을 출력
    • 만약 가장 많이 팔린 책이 여러 개일 경우에는 사전 순으로 가장 앞서는 제목을 출력
  • 시간 제한: 2초
  • 메모리 제한: 128 MB

 

""" 입출력 예시) (예제 입력 1) 5 top top top top kimtop -> top (예제 입력 2) 9 table chair table table lamp door lamp table chair -> table (예제 입력 3) 6 a a a b b b -> a (예제 입력 4) 8 icecream peanuts peanuts chocolate candy chocolate icecream apple -> chocolate (예제 입력 5) 1 soul -> soul """

 

 

## 의사코드 ## # 책별 판매 개수 세기 # from collections import Counter # cnt = Counter(책 리스트) # 책 리스트를 사전 순으로 정렬하기 위해 오름차순 정렬 # books.sort() # 책별 판매 개수를 카운트한 것에서 개수가 가장 많은 것의 제목 출력 # Counter(books).most_common(1)[0][0]

 

 

 

 

from collections import Counter n = int(input()) books = [] # 책 제목을 담을 리스트 for _ in range(n): books.append(input()) # 책 리스트를 사전 순으로 정렬하기 위해 오름차순 정렬 books.sort() # 책별 판매 개수를 카운트한 것에서 개수가 가장 많은 것의 제목 출력 print(Counter(books).most_common(1)[0][0])

 

 

  • most_common(): 개수가 많은 순으로 정렬된 튜플 배열 리스트를 반환
    • most_common(1): 개수가 가장 많은 튜플 1개만 출력

 

  • 과정 확인

 

books = ['table', 'chair', 'table', 'table', 'lamp', 'door', 'lamp', 'table', 'chair'] """ 책 리스트: ['table', 'chair', 'table', 'table', 'lamp', 'door', 'lamp', 'table', 'chair'] 사전 순으로 정렬된 책 리스트: ['chair', 'chair', 'door', 'lamp', 'lamp', 'table', 'table', 'table', 'table'] 책별 판매 개수 카운트: Counter({'table': 4, 'chair': 2, 'lamp': 2, 'door': 1}) most_common(): [('table', 4), ('chair', 2), ('lamp', 2), ('door', 1)] most_common(1): [('table', 4)] 가장 많이 팔린 책의 제목: table """

 

 

 

 

 

 

https://gorokke.tistory.com/126

 

파이썬 collections 모듈 Counter 사용법

Counter() : 문자열이나, list 의 요소를 카운팅하여 많은 순으로 딕셔너리형태로 리턴한다 from collections import Counter a_list = ['a','s','d','s'] Counter(a_list) => {'s':2,'a':a,'d':1} most_common() : 개수가 많은 순으로

gorokke.tistory.com

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다!