Drill

ProblemsJava › finance

Split a total into installments

hardfinanceMathArraysGreedyJava

A checkout spreads a total across installments, keeping the early ones a cent higher so each slice is as equal as possible.

installmentPlan(totalMinor: int, installments: int) → list<int>

Java needs a compiler and Drill does not host one yet, so this page is the reference rather than an exercise: the problem, worked examples, and the solution in full. To type it out, the same problem runs in Python.

Solve it in Python →

Where you start

List<Integer> installmentPlan(int totalMinor, int installments) {
    
}

Worked examples

CallResult
installmentPlan(100, 3)Main.<Integer>ls(34, 33, 33)
installmentPlan(100, 6)Main.<Integer>ls(17, 17, 17, 17, 16, 16)
installmentPlan(7, 3)Main.<Integer>ls(3, 2, 2)
installmentPlan(10, 2)Main.<Integer>ls(5, 5)

Hint

Compute the floor share and the leftover, then hand the leftovers to the front.

Reference solution in Java
List<Integer> installmentPlan(int totalMinor, int installments) {
    List<Integer> result = new ArrayList<>();
    if (installments <= 0) return result;
    int per = totalMinor / installments;
    int extra = totalMinor % installments;
    for (int i = 0; i < installments; i++) result.add(i < extra ? per + 1 : per);
    return result;
}

The same problem in another language

More finance problems in Java