🔗 다단계 칫솔 판매
import java.util.Map;
import java.util.HashMap;
class Solution {
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
// 민호 : root node
// 이익의 10%를 부모에게 주고 나머지는 자신이 가짐, 부모는 또 부모에게 10% 줌
// 10% 계산시 원단위 절사, 1원 미만인 경우 분배하지 않고 자신이 가짐
// enroll : 각 판매원의 이름을 담은 배열, 민호의 이름은 없음
// referral : i 번째에 있는 이름은 배열 enroll 내에서 i 번째에 있는 판매원을 조직에 참여시킨 사람의 이름
// seller : i 번째 판매 집계 데이터가 어느 판매원에 의한 것인지
// amount : i 번째에 있는 수는 i 번째 판매 집계 데이터의 판매량
// 칫솔 1개에 100원
// 판매원에게 배분된 이익금의 총합을 계산해 return
Map<String, String> parent = new HashMap<>();
for(int i=0;i<enroll.length;i++){
parent.put(enroll[i],referral[i]);
}
// key : 판매자 , val : 판매량
Map<String, Integer> total=new HashMap<>();
for(int i=0 ; i<seller.length;i++){
String curName= seller[i];
int money=amount[i]*100;
// money가 0보다 크고 root 가 아닐때 까지 반복
while(money>0 && !curName.equals("-")){
// 90%를 판매자가 가짐
total.put(curName,total.getOrDefault(curName,0)+money-(money/ 10));
// 판매자의 부모를 새로운 부모로
curName=parent.get(curName);
// 10%의 돈은 나눠줌
money/=10;
}
}
int []answer=new int[enroll.length];
for(int i=0;i<enroll.length;i++){
answer[i]=total.getOrDefault(enroll[i],0);
}
return answer;
}
}