Самое частое слово
Вы решили задачу. Теперь можно сравнить подходы.
Подсчитываем частоты, затем выбираем по частоте и алфавиту.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Словарь частот
Ключ из отрицательной частоты и слова выбирает наибольшую частоту и лексикографически первое слово.
counts = {}
for _ in range(int(input())):
for word in input().split():
counts[word] = counts.get(word, 0) + 1
print(min(counts, key=lambda word: (-counts[word], word)))
Время: O(W) в среднем без учёта длины слов. Память: O(U + L), U разных слов, L токенов строки.
Другой способ: Сортировка и группы
После сортировки равные слова соседствуют. При равной частоте сохраняем более раннее слово.
from itertools import groupby
words = []
for _ in range(int(input())):
words.extend(input().split())
words.sort()
best, best_count = '', 0
for word, group in groupby(words):
count = sum(1 for _ in group)
if count > best_count:
best, best_count = word, count
print(best)
Время: O(W log W) сравнений слов. Память: O(W) слов.
На что обратить внимание
- Регистр и знаки пунктуации не удаляются: слово определяется разделителями ввода.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.