본문 바로가기
알고리즘/백준 solved.ac PS

[백준][solved.ac][Silver 4][Python] 1302번 : 베스트셀러

by 빛밤하늘 2021. 6. 8.
반응형

밑의 링크는 백준에서의 문제 링크입니다.

 

1302번: 베스트셀러

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

www.acmicpc.net

 

 

 

 

 

 

 

 

파이썬 코드와 결과입니다.

# readline을 사용하기 위해 import합니다.
from sys import stdin

# 첫째 줄에 오늘 하루 동안 팔린 책의 개수 N을 입력합니다.
# 1,000보다 작거나 같은 자연수입니다.
# 정수형으로 변환합니다.
N = int(stdin.readline())
# 책의 제목을 키, 팔린 책의 개수를 값으로 저장할 딕셔너리 변수를 선언합니다.
books_info = {}

# 오늘 하루 동안 팔린 책의 개수 N만큼 반복합니다.
for book_idx in range(N):
    # 책의 제목을 입력합니다.
    # 맨 끝의 \n은 떼어줍니다.
    book = stdin.readline().rstrip()

    # books_info의 키에 현재 입력한 책의 제목이 없다면
    if book not in books_info.keys():
        # 키를 현재 입력한 책의 제목으로 하고 값을 1로 설정해 books_info에 넣어줍니다.
        books_info[book] = 1
    # books_info의 키에 현재 입력한 책의 제목이 있다면
    else:
        # 해당 책의 제목의 값에 1을 더해줍니다.
        books_info[book] += 1

# books_info의 키-값 튜플을 책이 팔린 개수의 내림차순, 책의 제목의 오름차순으로 정렬합니다.
books_sell = sorted(books_info.items(), key=lambda book: (-book[1], book[0]))

# books_sell의 맨 처음에 있는 책의 정보에서의 책의 이름을 출력합니다.
print(books_sell[0][0])

결과

 

문제의 카테고리에서 해시를 사용한 집합과 맵이라는 카테고리가 있는데

파이썬의 딕셔너리도 여기에 속하는 것 같은데 맞는지 모르겠습니다...

 

 

 

※ 궁금한 부분, 이상한 점 및 오타는 댓글에 부탁드립니다.

※ 더 효율적이고 빠른 정답을 환영합니다.

반응형

댓글