aboutsummaryrefslogtreecommitdiff
path: root/challenge-236/deadmarshal/java/Ch1.java
blob: 013b6ac91cb22ffb7be9ffc82924ec8c4fe18ce2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

public class Ch1 {
  public static void main(String[] args) {
    ArrayList<Integer> arr1 = new ArrayList<>(List.of(5,5,5,10,20));
    ArrayList<Integer> arr2 = new ArrayList<>(List.of(5,5,10,10,20));
    ArrayList<Integer> arr3 = new ArrayList<>(List.of(5,5,5,20));
    System.out.println(exact_change(arr1));
    System.out.println(exact_change(arr2));
    System.out.println(exact_change(arr3));
  }

  private static boolean exact_change(List<Integer> list) {
    HashMap<Integer,Integer> m = new HashMap<Integer,Integer>();
    for(var e : list)
    {
      if(e == 10)
      {
        m.replace(5, m.get(5) - 1);
        if(m.get(5) == 0) return false;
      }
      else if(e == 20)
      {
        if(m.getOrDefault(5,0) != 0 &&
          m.getOrDefault(10,0) != 0)
        {
          m.replace(5,m.get(5)-1);
          m.replace(10,m.get(10)-1);
        }
        else if(m.get(5) > 2) m.replace(5,m.get(5)-3);
        else return false;
      }
      m.put(e,m.getOrDefault(e,0)+1);
    }
    return true;
  }
}