Жадные алгоритмы
Жадными называют класс алгоритмов, заключающихся в принятии локально оптимальных решений на каждом этапе. Так как локально оптимальное решение вычислить гораздо проще, чем глобально оптимальное
a = [1, 2, 5, 10, 50, 100, 500, 1000, 2000, 5000]
def solution(s):
monet = []
for x in reversed(a):
monet += [x] * (s // x)
s %= x
return monet
Подробнее об алгоритмах: https://ru.algorithmica.org/cs/combinatorial-optimization/greedy/