atm + ranges solution

This commit is contained in:
Leonid
2025-04-08 10:57:42 +03:00
parent f40b140249
commit a2132695d3
2 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1,46 @@
package com.algos.shortcut;
import java.util.Arrays;
// В банкомате доступны банкноты различных номиналов, например, [100, 500, 1000].
// Вам необходимо написать программу, которая по заданной сумме определяет минимальное количество банкнот,
// необходимое для выдачи этой суммы. Допускается использовать любое количество банкнот каждого номинала.
//
// Если точно составить требуемую сумму с использованием имеющихся номиналов невозможно,
// программа должна вернуть -1.
public class Atm {
public static void main(String[] args) {
int[] banknotes = {100, 500, 1000};
// int[] banknotes = {1000, 100, 500};
// int amount = 1500;
int amount = 1803;
// int amount = 1800;
// int amount = 600;
int result = minBanknotes(banknotes, amount);
System.out.println(result);
}
private static int minBanknotes(int[] banknotes, int amount) {
Arrays.sort(banknotes);
int[] result = new int[banknotes.length];
for (int i = banknotes.length - 1; i >= 0; i--) {
if (amount < banknotes[i]) {
continue;
}
result[i] = amount / banknotes[i];
amount = amount % banknotes[i];
}
if (amount != 0) {
return -1;
}
return Arrays.stream(result).sum();
}
}