[8/18] 베스트셀러

이경준·2021년 8월 18일
0

코테

목록 보기
82/140
post-custom-banner

실버4 문제

내 코드

n = int(input())
arr = []

for _ in range(n):
    arr.append(input())
    
arr.sort()

target = arr[0]
cnt = 0
imax = 0
answer = arr[0]

for i in range(1, n):
    if (target == arr[i]):
        cnt += 1
    else:
        target = arr[i]
        cnt = 0
        
    if (cnt > imax):
        imax = cnt
        answer = arr[i]
        
print(answer)

로직

  1. 리스트에 받아서 정렬
  2. target과 answer을 첫번째 책 이름으로 지정
  3. for문을 돌려서
  • 현재값이 이전값과 같으면 cnt를 추가한다.
  • 다르다면 cnt를 0으로 초기화하고, target을 새로 설정한다.
  1. cnt가 최대값(imax)보다 크다면, imax를 새로 설정하고 answer를 새로운 책으로 변경한다. (더 클때만 변경되기 때문에, 개수가 같으면 사전순이 제일 빠른 책이 유지된다)

효율적인 코드

n = int(input())
books = {}

for _ in range(n):
    book = input()
    if book not in books:
        books[book] = 1
    else:
        books[book] +=1

max_freq = max(books.values())

best_seller=[]

for book, number in books.items():
    if number ==max_freq:
        best_seller.append(book)

print(sorted(best_seller)[0])

로직

  • 딕셔너리를 사용한 코드다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글