[백준] 1302번: 베스트셀러 (sol.4)

임정규·2024년 8월 4일
0

백준풀이

목록 보기
4/13

풀이시간: 15분

1. 나의 풀이

seller = {}
best_book = ''
best_num = 0

for _ in range(int(input())):
    book = input()
    if book in seller:
        seller[book] += 1
    else:
        seller[book] = 1

for k, v in seller.items():
    if v > best_num:
        best_book = k
        best_num = v
    elif v == best_num:
        if best_book > k:
            best_book = k
        else:
            pass

print(best_book)
  • 판매된 책 목록을 입력받고 가장 많이 팔린 책을 찾아야함으로 맵 사용
  • 딕셔너리를 활용하여 책을 입력받을 때마다 팔린 갯수 증가
  • 새로 입력이 될 때와 입력이 되어 있던 상태를 나누어서 구현
  • 판매된 권수가 같을 경우 사전순으로 먼저오는 것을 출력해야 함으로 문자열 비교도 추가

2. 또다른 풀이

d = dict()
for _ in range(int(input())):
    book = input()
    if book in d:
        d[book] += 1
    else:
        d[book] = 1

m = max(d.values())
candi = []
for k, v in d.items():
    if v == m:
        candi.append(k)

# print(sorted(candi)[0])
candi.sort()
print(candi[0])
  • 판매된 권수의 최댓값을 구함
  • 최댓값을 가진 키값(책)들을 찾아 배열에 넣음
  • 배열을 오름차순(사전순)으로 정렬하여 첫번째 값을 뽑아출력

3. 보완할 것

  • .values(): 딕셔너리의 모든 value값들을 반환
  • .keys(): 딕셔너리의 모든 key값들을 반환
  • .items(): 딕셔너리의 요소를 key, value순으로 반환
  • 한꺼번에 처리하려하지 말고 나누어서 처리하기
    - 베스트 셀러를 찾으면서 사전순으로 판단도 하려고 했다.
profile
안녕하세요.

0개의 댓글