새소식

⌨️ 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

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

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