Pizza tag ranker

EasyАлгоритмы
05:00
Лучше работает на десктопе
AlgorithmsSortingHash MapRanking
YouTube00:36:24-00:50:202026 04 28 14 03 31 Interview Dodo Technical (Python, SQL) [YouTube vRhkl-rrQH0]Страница собеса

Нужно ранжировать пиццы по тегам.

Даны:

  • tag_weights: вес каждого тега;
  • pizzas: список пицц в формате {"id": string, "tags": string[]};
  • limit: сколько лучших пицц вернуть.

Score пиццы — сумма весов всех ее тегов, которых нет в tag_weights, дают 0. Верните id пицц по убыванию score. Если score одинаковый, сортируйте по id лексикографически.

Сигнатура

def rank_pizzas(tag_weights: dict[str, float], pizzas: list[dict], limit: int) -> list[str]:

Примеры

Пример 1

Вход:
tag_weights = {"spicy":3,"cheese":2,"vegan":5}
float] = [{"id":"pepperoni","tags":["spicy","cheese"]},{"id":"margherita","tags":["cheese"]},{"id":"veggie","tags":["vegan","cheese"]}]
pizzas = 2
Выход:["veggie","pepperoni"]

Ranking by summed tag weights

Пример 2

Вход:
tag_weights = {"hot":2}
float] = [{"id":"b","tags":["unknown"]},{"id":"a","tags":["unknown"]},{"id":"c","tags":["hot"]}]
pizzas = 3
Выход:["c","a","b"]

Unknown tags are zero and ties are sorted by id

Пример 3

Вход:
tag_weights = {"premium":10,"kids":1}
float] = [{"id":"four-cheese","tags":["premium"]},{"id":"mini","tags":["kids"]},{"id":"combo","tags":["premium","kids"]}]
pizzas = 1
Выход:["combo"]

Limit cuts the sorted list

Консоль
Нажмите Run или Ctrl+Enter для запуска