이중객체를 만들어 탐색시간을 O(1)로 만들자(Hash map 사용)
- 부모노드가 존재하면 판매액의 10%를 주고 자신은 90%를 갖는다.(총 금액 - Math.floor(판매액*0.1)
- 부모노드가 존재하지 않으면 프로그램 종료
- 만약 금액의 10%가 1원 미만이면 부모노드에게 돈을 주지 않고 자신이 총액을 가지고 프로그램 종료
function solution(enroll, referral, seller, amount) {
var answer = [];
let tree = {
'minho':{
parent : 'none',
money : 0
}
}
for(var i =0; i<enroll.length; i++){
let obj = {
parent : referral[i] === '-' ? 'minho' : referral[i],
money : 0
}
tree[enroll[i]] = obj
}
for(var j =0; j<seller.length; j++){
let sellerName = seller[j];
let price = amount[j]*100;
while(sellerName !== 'minho'){
let parent = tree[sellerName].parent;
let forParent = Math.floor(price*0.1);
if(forParent < 1){
tree[sellerName].money += price
break;
}else{
tree[sellerName].money += price-forParent;
sellerName = parent
price = forParent
}
}
}
enroll.forEach((data,idx)=>answer.push(tree[data].money))
return answer;
}
테스트케이스 11, 12, 13 번의 입력값이 매우 많다는 것을 깨닫고 찾는 값을 O(1)에 찾도록 이중객체를 사용하여 Hash map을 이용하여 구현하였다.