코딩/백준

[백준/파이썬/자료구조] 1302번 베스트셀러 코딩테스트 연습풀이

thisisjade 2022. 6. 29. 18:54
728x90

문제 출처: https://www.acmicpc.net/problem/1302

 

1302번: 베스트셀러

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

www.acmicpc.net

 

문제

김형택은 탑문고의 직원이다. 김형택은 계산대에서 계산을 하는 직원이다. 김형택은 그날 근무가 끝난 후에, 오늘 판매한 책의 제목을 보면서 가장 많이 팔린 책의 제목을 칠판에 써놓는 일도 같이 하고 있다.

오늘 하루 동안 팔린 책의 제목이 입력으로 들어왔을 때, 가장 많이 팔린 책의 제목을 출력하는 프로그램을 작성하시오.

 

입력

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

 

출력

첫째 줄에 가장 많이 팔린 책의 제목을 출력한다. 만약 가장 많이 팔린 책이 여러 개일 경우에는 사전 순으로 가장 앞서는 제목을 출력한다.

 

정답

import sys
n = int(sys.stdin.readline().rstrip())
dic = {}

for _ in range(n):
    tmp = sys.stdin.readline().rstrip()
    if tmp in dic:
        dic[tmp] +=1
    else:
        dic[tmp] = 1

answer = sorted(dic.items(),key = lambda x : (-x[1],x[0]))
print(answer[0][0])

1. n에 책의 개수 입력

2. dic 세팅

3. for문 - dic에 값이 없을 경우 key에 tmp, value에 1세팅, dic에 값이 있을 경우 value값에 +1

4. answer에 value값의 역순과 key값의 순서대로 입력

5. answer[0][0] 출력(맨 처음 key값)

 

코드 자체가

https://hiisk.tistory.com/400

 

[백준/파이썬/자료구조] 11652번 카드 코딩테스트 연습풀이

문제 출처: https://www.acmicpc.net/problem/11652 11652번: 카드 준규는 숫자 카드 N장을 가지고 있다. 숫자 카드에는 정수가 하나 적혀있는데, 적혀있는 수는 -262보다 크거나 같고, 262보다 작거나 같다. 준

hiisk.tistory.com

이 문제와 상당히 유사한 문제였습니다.

 

코드를 가져와서 조금 바꿔서 해결하였습니다.

728x90