[BOJ 1302] 베스트셀러 (Python)

박지훈·2021년 4월 27일
0

[BOJ 1302] 베스트셀러 (Python)



풀이

문제의 포인트는 중복되는 데이터의 개수를 세준 후 데이터의 개수가 가장 많은 것을 추출하면 된다. 단, 데이터의 개수가 가장 많은 것이 여러 개일 경우에는 사전 순으로 오름차순 정렬 후 제일 앞의 제목을 반환하면 된다.

Python에는 리스트안의 데이터 개수를 빠르게 세도록 지원하는 계수기 도구인 collections 모듈의 Counter 클래스가 있다.(Counter 클래스를 잘 모르겠다면 클릭) 이를 활용하여 문제를 풀면 쉽게 풀 수 있었다. (Python은 쉬우면서도 굉장히 편리한 모듈을 제공한다고 생각한다.)

collections.Counter(데이터 개수 셀 리스트)로 오늘 팔린 책의 제목과 개수를 구하며, 이에 대한 결과값은 Dictionary자료형으로 데이터 개수가 가장 많은 것의 key값을 뽑아내도록 하였다.



코드

import sys
import collections

input = sys.stdin.readline
N = int(input())
books = list(input().rstrip() for _ in range(N))

# 오늘 책이 몇 개씩 판매됐는지 정산해준다고 이해하면 쉽다.
counter = collections.Counter(books)

# 가장 많이 팔린 책 권수
maximum = max(counter.values())
ans = []
for key, value in counter.items():
    # 가장 많이 팔린 책이 여러 개일 수도 있기에 조건문 작성
    if value >= maximum:
        maximum = value
        ans.append(key)

ans.sort()
print(ans[0])
profile
Computer Science!!

0개의 댓글