Элементы с максимальной и минимальной суммой цифр
С клавиатуры вводится кол-во элементов массива и сам массив чисел. Размер массива не больше 100 элементов. Нужно вывести элемент с минимальной суммой цифр в одну строку(если таких несколько, вывести минимальный из них). А во вторую, элемент с максимальной суммой цифр(если таких несколько, вывести максимальный из них)
В примере ниже: 11(1+1=2); 21(2+1=3); 111(1+1+1=3), 2-минимальная сумма, 3-максимальная, но т.к. элементов с суммой цифр равной 3м-два, то выводится максимальный из них т.е. 111
Подскажите, пожалуйста, алгоритм действий, поскольку у меня даже нет идей как выполнить поставленную задачу
Я знаю как найти сумму цифр числа, но как из массива взять число для проверки(и при этом, в случае если чисел с минимальной/максимальной суммой несколько, определить какое из них стоит выводить)-не понимаю
Пример
Вход
3
11 21 111
Выход
11
111
Ответы (2 шт):
- Читаем длинну массива
- Читаем каждый элемент
- Ищем минимальный элемент в массиве
a, где ключ - его сумма цифр - Так же с максимальным.
n = input()
a = input().split()
def f(x):
return sum(map(int, x if int(x) > 0 else x[1:])) - 0 if int(x) > 0 else int(x[1])
print(min(a, key=f))
print(max(a, key=f))
def digits_sum(num):
return sum([int(x) for x in str(num) if x.isdigit()])
items = ['11', '21', '111', '-1']
min_ = min((digits_sum(x), int(x)) for x in items)[1]
max_ = max((digits_sum(x), int(x)) for x in items)[1]
print(min_)
print(max_)
вывод на экран:
-1
111