Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package solutions;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- public class transfers {
- public static List<String> transferBalances(List<String> balances) {
- Map<Character, Integer> map = new HashMap<>();
- for (String balance: balances) {
- char sourceBank = balance.charAt(0);
- char destBank = balance.charAt(1);
- int amount = Integer.parseInt(balance.substring(2));
- map.put(sourceBank, map.getOrDefault(sourceBank, 0) - amount);
- map.put(destBank, map.getOrDefault(destBank, 0) + amount);
- }
- char initialCentralBank = balances.get(0).charAt(0);
- char centralBank = selectCentralBank(map, initialCentralBank);
- List<String> res = new ArrayList<>();
- for (Map.Entry<Character, Integer> entry: map.entrySet()) {
- if (entry.getKey() == centralBank) {
- continue;
- }
- StringBuilder sb = new StringBuilder();
- if (entry.getValue() < 0) {
- sb.append(entry.getKey()).append(centralBank).append(-1 * entry.getValue());
- } else if (entry.getValue() > 0) {
- sb.append(centralBank).append(entry.getKey()).append(entry.getValue());
- }
- res.add(sb.toString());
- }
- return res;
- }
- public static char selectCentralBank(Map<Character, Integer> map, char initialCentralBank) {
- char res = initialCentralBank;
- int maxAbsAmount = map.get(initialCentralBank);
- for (Map.Entry<Character, Integer> entry: map.entrySet()) {
- if (Math.abs(entry.getValue()) > maxAbsAmount) {
- maxAbsAmount = Math.abs(entry.getValue());
- res = entry.getKey();
- }
- }
- return res;
- }
- public static void main(String[] args) {
- List<String> balances = new ArrayList<>();
- balances.add("AB1");
- balances.add("BC1"); // AC1 XY1
- balances.add("XY1");
- // balances.add("DC1"); // DC1
- // balances.add("BC100"); // A0 B0 C0
- List<String> res = transferBalances(balances);
- for (String val: res) {
- System.out.println(val); // AB10 AC10000
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement