💡풀이
- parent 해시맵에 판매원과 추천인 넣기
- seller과 amount 배열 하나씩 계산 함수 실행 (calculate)
- 해당 판매원의 money 해시에 이익 계산해서 넣기
- parent 해시에서 그 판매원의 추천인 찾아서(containsKey) 재귀로 10% 계산 실행
import java.util.*;
class Solution {
Map<String, String> parent = new HashMap<>();
Map<String, Integer> money = new HashMap<>();
public int[] solution(String[] enroll, String[] referral, String[] seller, int[] amount) {
for(int i = 0; i<enroll.length; i++){
parent.put(enroll[i], referral[i]);
}
for(int i = 0; i<seller.length; i++){
calculate(seller[i], amount[i] * 100);
}
int[] answer = new int[enroll.length];
for(int i = 0; i<enroll.length; i++){
answer[i] = money.getOrDefault(enroll[i], 0);
}
return answer;
}
void calculate(String curr, int sales){
int nextSales = sales / 10;
money.put(curr, money.getOrDefault(curr, 0) + sales - nextSales);
if(nextSales > 0 && parent.containsKey(curr)){
calculate(parent.get(curr), nextSales);
}
}
}
🫥 처음에는 트리로 풀어야하나 했는데 이진트리는 아니여서 계속 고민하다가 참고한 풀이 (재귀는 생각못했네..)