관리 메뉴

SW

[백준 1302] 베스트 셀러 본문

대학교/Algorithm

[백준 1302] 베스트 셀러

SWKo 2020. 9. 2. 23:44

0. 제목

  • 백준 1302 베스트 셀러
  • BOJ 1302 베스트 셀러
  • Python 1302 베스트 셀러

1. 문제

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

 

1302번: 베스트셀러

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

www.acmicpc.net


2. 풀이

  • 등장 횟수를 계산할 때는 Dictionary 자료형을 이용하면 효과적이다.
  • books라는 Dictionary를 선언하고, book을 입력 갯수만큼 입력받는다. 입력받으면서 딕셔너리에 저장하고 갯수를 1 증가시킨다.
  • Dictionary에 이미 있는 이름이면 1 증가시켜주고 아니면 1만 증가시킨다.
  • 저장 한 value들 중 가장 큰 값을 변수에 저장해 놓는다.
  • Dictionary에 잘 쓰이는 key, value 반복문을 사용하여 value가 가장 큰 값을 저장한 변수와 같으면 새로 선언한 배열에 append하도록 한다. 
  • 최종적으로 가장 많은 갯수를 가진 이름들의 배열이 생성될 것이다.
  • 사전 순으로 가장 먼저 나오는 것을 출력해야 하므로 sorted()를 사용하여 정렬하고 첫번 째 원소를 출력한다.

3. 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
= int(input())
 
books = {}
 
for _ in range(n):
    book = input()
    if book not in books:
        books[book] = 1
    else:
        books[book] += 1
      
target = max(books.values())
arr = []
 
for book, number in books.items():
    if number == target:
        arr.append(book)
        
print(sorted(arr)[0])

 

'대학교 > Algorithm' 카테고리의 다른 글

[백준 2110] 공유기 설치  (0) 2020.09.04
[백준 1874] 스택 수열  (0) 2020.09.03
[백준 1236] 성 지키기  (0) 2020.09.02
[백준 1668] 트로피 진열  (0) 2020.08.30
[백준 1568] 새  (0) 2020.08.25
Comments