Словарь синонимов
Вы решили задачу. Теперь можно сравнить подходы.
Сохраняем соответствие в обоих направлениях.
Авторский разбор для локальной версии на основе условия задачи. Это не выгрузка чужих посылок и не официальное решение исходного сайта.
Ваше принятое решение
Рекомендуемое решение: Двусторонний словарь
Запрос может содержать любое слово пары, поэтому нужны обе записи.
n = int(input())
synonyms = {}
for _ in range(n):
a, b = input().split()
synonyms[a] = b
synonyms[b] = a
print(synonyms[input()])
Время: O(n) в среднем без учёта длины строк. Память: O(n) пар ссылок и текст слов.
Другой способ: Поиск по списку пар
Для единственного запроса можно последовательно проверять обе стороны каждой пары.
n = int(input())
pairs = [input().split() for _ in range(n)]
word = input()
for a, b in pairs:
if word == a:
print(b)
break
if word == b:
print(a)
break
Время: O(n) без учёта длины строк. Память: O(n) для пар и текста.
На что обратить внимание
- Синонимия симметрична.
- Все слова различны, поэтому перезаписи конфликтующих пар нет.
Рекомендация учитывает сложность и читаемость для этой задачи. Единственного самого быстрого решения для всех размеров входа и всех компьютеров может не быть.