atm + ranges solution
This commit is contained in:
46
src/main/java/com/algos/shortcut/Atm.java
Normal file
46
src/main/java/com/algos/shortcut/Atm.java
Normal 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user