https://school.programmers.co.kr/learn/courses/30/lessons/77486
import java.util.*;
class Solution {
public static HashMap<String, String> parent = new HashMap<String, String>();
// key node - value parent
public static HashMap<String, Integer> money = new HashMap<String, Integer>();
// key node - value money
public void distribute(String sellerName, int revenue) {
String p = parent.get(sellerName); // parent name
if (revenue < 10) { // 수익을 더 이상 나눌 수 없는 경우
money.put(sellerName, money.get(sellerName)+revenue);
return ;
}
Integer charges = revenue-revenue/10;
if (p.equals("-")) { // 부모가 center일 경우
money.put(sellerName, money.get(sellerName)+charges);
return ;
}
// 그렇지 않은 경우, 부모 노드로 따라올라가며 계속 수익을 분배한다.
money.put(sellerName, money.get(sellerName)+charges);
distribute(p, revenue/10);
}
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
int[] answer = new int[enroll.length];
int members = referral.length;
for (int i=0; i<members; i++) {
parent.put(enroll[i], referral[i]); // kids - parents pair
money.put(enroll[i], 0);
}
for (int i=0; i<seller.length; i++) {
// 판매 이익은 개당 100원
distribute(seller[i], amount[i]*100);
}
int i=0;
for (String key: enroll) {
Integer value = money.get(key);
answer[i] = value;
i++;
}
return answer;
}
}