46 lines
1.7 KiB
Java
46 lines
1.7 KiB
Java
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();
|
||
}
|
||
} |