import math
from collections import defaultdict
def solution(enroll, referral, seller, amount):
answer = []
graph_dict = dict()
profit_dict = defaultdict(int)
for i in range(len(enroll)):
graph_dict[enroll[i]] = referral[i]
for i in range(len(seller)):
cur_person, cur_amount = seller[i], amount[i]
cur_money = cur_amount * 100
while cur_person != "-":
lost_profit = math.floor(cur_money * 0.1)
my_profit = cur_money - lost_profit
if my_profit == 0:
break
profit_dict[cur_person] += my_profit
cur_money = lost_profit
cur_person = graph_dict[cur_person]
for person in enroll:
answer.append(profit_dict[person])
return answer
실제 문제를 풀 때는 이것보다 난이도가 높았던 것 같은데 다시 푸니 쉬운 편이다. 다만 소수점 계산 관련해서 조심해야 한다. 10퍼센트를 주느냐, 90퍼센트를 가지고 전체에서 뺴고 주냐에서 답이 차이가 난다. 소수점 버림에서 차이가 나기 때문이다.