Клиент Т‑Банка ищет, какие три входящих перевода из amounts (в рублях) закрыли счёт на target рублей. Точного совпадения может не быть.
Выберите три разных перевода (по позициям) и верните их сумму, ближайшую к target. Если две суммы одинаково близки, верните меньшую.
В работе: Сверка в приложении: «скорее всего, счёт на 15 000 ₽ оплачен этими тремя переводами».
Пример 1
Ввод
amounts = [5000, 2500, 7000, 1200, 3300] target = 15000
Вывод
15300
5000 + 7000 + 3300 = 15 300, точнее не собрать.
Пример 2
Ввод
amounts = [100, 200, 300, 400] target = 650
Вывод
600
600 и 700 одинаково далеко — берём 600.
Ограничения
- 3 ≤ n ≤ 1000
- −10⁶ ≤
amounts[i]≤ 10⁶ (возвраты отрицательные) - −3·10⁶ ≤
target≤ 3·10⁶ - Лимит — 2 с на тест (2000 мс).
Как вызывается ваш код
Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула.
print() и console.log() уходят в консоль.
def closest_three(amounts, target):
Источник: наша задача на данных Т-Банка. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.