In Kanada wird der Penny nicht mehr in Umlauf gebracht. Barzahlungen werden auf die nächsten 5 Cent gerundet.
Durch die Aufteilung der Einkäufe kann Geld gespart werden. Zum Beispiel kosten zwei Artikel im Wert von 1,02 US-Dollar 2,04 US-Dollar, was sich auf 2,05 US-Dollar aufrundet. Wenn Sie die Artikel jedoch in separaten Käufen kaufen, wird jeder Preis auf 1,00 US-Dollar gerundet, was einem Gesamtbetrag von 2,00 US-Dollar entspricht. Wenn Sie jedoch zwei Artikel zu einem Preis von jeweils 1,03 USD kaufen, ist es besser, sie in einem einzigen Einkauf zu kaufen.
Eine andere Möglichkeit, Geld zu sparen, ist die Verwendung einer Kreditkarte, wenn die Rundung ungünstig ist, da Kreditzahlungen nicht gerundet werden. Wenn wir zwei Artikel im Wert von 1,04 USD haben möchten, wird der Gesamtpreis auf 2,10 USD aufgerundet, unabhängig davon, wie wir die Käufe aufgeteilt haben. Daher sollten wir diese Artikel mit einer Kreditkarte bezahlen.
Schreiben Sie eine Funktion oder ein Programm, das eine Liste der Artikelpreise als Ganzzahl in Cent akzeptiert und den niedrigstmöglichen Gesamtpreis (in Cent) für die Artikel ausgibt, die durch eine Abfolge von Einkäufen entweder in bar oder per Gutschrift erzielt werden können.
Kürzester Code gewinnt.
Testfälle
[] : 0
[48] : 48
[92, 20] : 110
[47, 56, 45] : 145
[55, 6, 98, 69] : 225
[6, 39, 85, 84, 7] : 218
[95, 14, 28, 49, 41, 39] : 263
[92, 6, 28, 30, 39, 93, 53] : 335
[83, 33, 62, 12, 34, 29, 18, 12] : 273
[23, 46, 54, 69, 64, 73, 58, 92, 26] : 495
[19, 56, 84, 23, 20, 53, 96, 92, 91, 58] : 583
[3, 3, 19, 56, 3, 84, 3, 23, 20, 53, 96, 92, 91, 58, 3, 3] : 598
[2, 3, 4, 4, 4, 4, 4] : 19
s.reduce(:+)
(normalerweise brauchen Sie sogar keine Klammern, aber in Ihrem Fall ...) und inline wechseln,m
um weitere 2 Zeichen zu erhalten.