Bize verilen bir miktar para var ve bu miktarı en az sayıda banknot ile karşılamak istiyoruz. Gerçek hayattada sıkça karşılaşılan bir problemi aslında greedy yaklaşımı ile çözüyoruz.
Örneğin
Input: V = 70 TL
Output: 2
50 TL + 20 TL = 70 TL
Input: V = 121 TL
Output: 3
100 TL + 20 TL + 1 TL = 121 TL
Mantık çok basit değil mi? Şimdi çözüme geçelim
MONEY = (1, 2, 5, 10, 20, 50, 100, 200)
def find_min(target):
result = []
for m in sorted(MONEY, reverse=True):
while target >= m:
target -= m
result.append(m)
print(*result, sep=" Tl + ", end=" = {} TL".format(sum(result)))
if __name__ == '__main__':
target = 1994
find_min(target)
Comments
comments powered by Disqus