728x90
https://school.programmers.co.kr/learn/courses/30/lessons/77486
분석
판매원에게 배분된 이익금의 총합을 계산하여(정수형으로), 입력으로 주어진 enroll에 이름이 포함된 순서에 따라 나열
seller, amount에 따른 이익이 날때마다 배분금액 계산 후 잔여량 수익금에 저장
풀이
1. 리스트 인덱스 딕셔너리 저장
def solution(enroll, referral, seller, amount):
money = [0 for _ in range(len(enroll))]
dict = {}
for i, e in enumerate(enroll):
dict[e] = i
for s, a in zip(seller, amount):
m = a * 100 # 이익금
while s != "-" and m>0:
idx = dict[s]
money[idx] += m-m//10 # 수익 저장
m //= 10 # 배분
s = referral[idx] # 상위로 이동
return money
2. 재귀
def solution(enroll, referral, seller, amount):
parent = dict(zip(enroll, referral))
answer = dict(zip(enroll, [0]*len(enroll)))
def distribute(target, money):
if money<10:
answer[target]+=money
elif parent[target]=='-':
answer[target]+=money-money//10
else:
answer[target]+=money-money//10 # 수익
distribute(parent[target], money//10) # 분배
for s,t in zip(seller, amount):
distribute(s, t*100) # 이익금
return list(answer.values())
728x90