[ BOJ / Python ] 1302번 베스트셀러

황승환·2021년 12월 19일
0

Python

목록 보기
56/498

이번 문제는 팔린 책의 제목을 입력 받을 때에 팔린 책의 제목들을 중복을 제거하여 따로 저장하고, 전체 판매 목록에서 각 책들의 판매 수를 세어 가장 많이 팔린 수의 책을 구하여 해결하였다. 가장 많이 팔린 책이 여러 개일 경우 사전 순으로 가장 앞서는 제목을 출력해야 하기 때문에 중복을 제거한 배열을 사전 오름차순으로 정렬을 한번 해주었다.

  • n을 입력받는다.
  • 판매 목록을 저장할 배열 sell을 선언한다.
  • sell의 중복을 제거한 경우를 저장할 배열 book을 선언한다.
  • 가장 많이 팔린 책의 판매량을 저장할 변수 answer_cnt를 0으로 정의한다.
  • 가장 많이 팔린 책의 제목을 저장할 변수 answer을 빈 문자열로 정의한다.
  • 0부터 n까지 반복하는 i에 대한 for문을 돌린다.
    -> sell에 책 제목을 입력받는다.
    -> 만약 sell[i]가 book에 없다면 book에 추가한다.
  • book을 정렬한다.
  • 0부터 book의 길이까지 반복하는 i에 대한 for문을 돌린다.
    -> 만약 sell에서의 book[i]의 개수가 answer_cnt보다 크다면 answer_cnt를 sell에서의 book[i]의 개수로 갱신해주고, answer 또한 book[i]로 갱신해준다. 이때 갱신의 조건을 "sell에서의 book[i]의 개수가 answer_cnt보다 크다면"으로 준 이유는 가장 많이 판매된 책이 여러개일 경우 사전순으로 앞에 등장하는 제목을 answer로 저장해야 하기 때문이다.
  • answer를 출력한다.

Code

n=int(input())
sell=[]
book=[]
answer_cnt=0
answer=''
for i in range(n):
    sell.append(str(input()))
    if sell[i] not in book:
        book.append(sell[i])
book.sort()
for i in range(len(book)):
    if sell.count(book[i])>answer_cnt:
        answer_cnt=sell.count(book[i])
        answer=book[i]
print(answer)

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글