https://school.programmers.co.kr/learn/courses/30/lessons/77486
defaultdict
와 재귀함수를 잘 써먹으면 되는 문제인 것 같다.from collections import defaultdict
import math
def solution(enroll, referral, seller, amount):
#가장 먼저 부모가 누구인지에 대한 그래프를 defaultdict로 만든다
parent = defaultdict(str)
for child, par in zip(enroll, referral):
parent[child] = par if par != "-" else "minho"
parent['minho'] = '-'
#벌어들인 수익을 저장하는 defaultdict
income = defaultdict(int)
for en in enroll:
income[en] = 0
def saveIncome(name, amount):
if parent[name] != "-":
if amount >= 10:
big = math.ceil(amount * 0.9)
income[name] += int(big)
saveIncome(parent[name], amount - int(big))
else:
income[name] += amount
for name, am in zip(seller, amount):
saveIncome(name, am * 100)
return list(income.values())