Notice
Recent Posts
Recent Comments
Link
«   2026/03   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Jinny Kong’s blog

19th KOALA 3주차 본문

KOALA

19th KOALA 3주차

Jinny Kong 2025. 7. 20. 23:48

코알라 3주차~!! ( ᐢ• 0 •ᐢ )

이번주도 본가 미룬이 이슈로 몰아서 풀었다 헤헤... ⌯◕ᴗ<⌯ಣ

담주부턴 정말로... 미리미리 해야지...!!!!  (진짜임)

 

 

오늘 소개할 문제는 바로..!!

 

백준 1302번 : 베스트셀러

 

 

오늘 팔린 책의 개수 N과 팔린 책들의 제목이 주어진다. 이에 따라 가장 많이 팔린 책의 제목을 출력하는 문제이다. 만약 가장 많이 팔린 책이 여러 권 있을 경우, 사전 순으로 가장 앞서는 제목을 출력하면 된다.

 

 

 

먼저 소개할 코드는 내가 직접 푼 코드인데 효율성을 고려해 짠 두번째 코드에 비하면 조금 코드 길이가 길다..! (•̅ ·͜· •̅。𖠗)

 

1. 직접 딕셔너리로 카운트 ¢(・ω・`)

N = int(input())      
words = []
for i in range(num):
    word = input()
    words.append(word) 

book_count = {}       
for word in words:    
    if word in book_count:
        book_count[word] += 1
    else:
        book_count[word] = 1

max_count = max(book_count.values())

# 가장 많이 팔린 책들 중 사전순으로 가장 앞선 제목 찾기
most_common = [word for word in book_count if book_count[word] == max_count]
print(min(most_common))

 

처음 이 문제를 풀었을 때는 다음과 같은 방식으로 접근했다. 우선 책의 제목들을 저장할 리스트 words를 만든 후, 입력받은 책 제목들을 이 리스트에 저장했다. 그 다음, book_count라는 딕셔너리를 만들어 리스트를 순회하며 해당 제목이 이미 등장한 적이 있다면 개수를 1 증가시키고, 처음 나오는 제목이라면 1로 초기화하는 방식으로 각각의 책 제목이 몇 번 등장했는지를 기록했다. 이후에는 book_count의 값들 중 가장 큰 값을 찾아, 가장 많이 팔린 책 제목들 중에서 사전순으로 가장 앞선 제목을 출력하도록 코드를 작성했다. 하지만 반복문과 조건문이 많아 다소 길어지고, 코드가 반복되는 부분도 생긴다. 。°꒰ ՞ ´ ᗣ`°꒱°。

 

 

 

 

2. collections의 Counter 사용 ¢(・ω・`)

from collections import Counter

num = int(input())
words = []
for i in range(num):
    word = input()
    words.append(word)

counter = Counter(words)
max_count = max(counter.values())

# 가장 많이 팔린 책들 중 사전순으로 가장 앞선 제목 찾기
most_common = [word for word in counter if counter[word] == max_count]
print(min(most_common))

 

조금 더 효율적인 방법이 있을까 싶어 찾아보다가 collections 모듈의 Counter를 알게 되었다. Counter는 리스트 요소들의 등장 횟수를 자동으로 세어주는 유용한 도구라고 한다. 책 제목들을 입력받아 words 리스트에 저장한 후, Counter(words)만으로 각 제목이 몇 번 등장했는지를 쉽게 세어줄 수 있다. 이후에는 첫 번째 코드와 동일하게 가장 많이 팔린 횟수를 구하고, 그에 해당하는 제목들 중 사전순으로 가장 앞선 것을 출력하면 된다. 이 방식은 코드가 훨씬 간결해지는 것 같다! 게다가 Counter는 내부적으로 최적화되어 있어 성능 면에서도 좋은 선택이라고 한다!! ( •́ ▾ •̀ )

 

 

 

C++로 알고리즘 문제를 풀 때는 리스트랑 벡터를 구분해서 써야 해서 좀 번거로웠는데, 확실히 파이썬은 함수도 다양하고 리스트도 유연하게 쓸 수 있어서 너무 좋은 것 같다 ㅎㅎ "이게 되려나?" 싶은 것들이 파이썬에서는 거의 다 돼서 진짜 편한 느낌... 왕편함!!!  ( ˶'ᵕ'˶)ෆ  여튼 3주차도 끗~  4주차는 꼬옥 미리 하쟈!! ⌯ ‘ ᵕ ‘ ⌯

'KOALA' 카테고리의 다른 글

19th KOALA 8주차  (2) 2025.08.24
19th KOALA 4주차  (5) 2025.07.27
19th KOALA 2주차  (0) 2025.07.13
19th KOALA 1주차  (0) 2025.07.06
18th Koala 8주차  (0) 2025.05.25