파이썬 백준 1302번
실버 4
https://www.acmicpc.net/problem/1302
문제 보기
분류: 자료 구조, 문자열, 정렬, 해시를 시용한 집학과 맵
문제 풀기
리스트에 책의 정보를 모두 입력받고 알파벳 순으로 정렬을 한다.
서로 인접한 리스트인 i-1, i 번째를 각각 비교하면서 동일한 책이면 카운트 +1 을 다른 책이면 카운트를 초기화한다.
카운트의 값이 지금까지 누적된 max_count 보다 커지면 새로이 베스트셀러 책으로 등록을 한다. 이때, 동일한 개수의 베스트셀러는 알파벳 순서로 인해 이전 책 이름이 우선시 된다.
코드 보기
import sys
inputdata = sys.stdin.readline
def fnWhichBookSoldTheMost():
if len(book_ls) == 1: ## 책이 하나일 경우 바로 출력.
print(book_ls[0])
else:
book_ls.sort() ## 알파벳 순으로 책 정렬 및 동일한 개수 일때를 대비.
# print(book_ls) # TEST PRINT
count = 1
max_count = 1
best_book = book_ls[0] ## 알파벳이 제일 빠른 책으로 초기화.
for i in range(1, len(book_ls)):
if book_ls[i - 1] == book_ls[i]: ## 동일한 책이 연속이라면 카운트 +1.
count += 1
elif book_ls[i - 1] != book_ls[i]: ## 동일한 책 연속이 끊겼다면 카운트 초기화.
count = 1
if max_count < count: ## 최대 개수가 신기록을 새웠다면 이를 max_count 에 저장.
max_count = count
best_book = book_ls[i] ## 동일한 최대 개수를 대비하여 알파벳이 제일 빠른 책 저장.
# print(max_count) # TEST PRINT
print(best_book)
if __name__ == "__main__":
n = int(inputdata().strip())
book_ls = []
for _ in range(n):
book_ls.append(str(inputdata().strip()))
# print(book_ls) # TEST PRINT
fnWhichBookSoldTheMost()
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 2562 - 최댓값 (0) | 2023.01.09 |
---|---|
[Python] 백준 풀기 2455 - 지능형 기차 (0) | 2023.01.08 |
[Python] 백준 풀기 11948 - 과목 선택 (0) | 2023.01.06 |
[Python] 백준 풀기 1269 - 대칭 차집합 (0) | 2023.01.05 |
[Python] 백준 풀기 1100 - 하얀 칸 (0) | 2023.01.04 |