본문 바로가기

PS

프로그래머스 77486 Python [다단계 칫솔 판매]

def solution(enroll, referral, seller, amount):
    answer = []
    node = dict(zip(enroll, referral))  # 각 판매원과 그 판매원의 추천인을 매핑
    total_profit = {e: 0 for e in enroll}  # 각 판매원의 이익금의 총합 초기화
    for s, qty in zip(seller, amount):  # 각 판매원의 제품 판매 수량에 대하여
        money = qty * 100  
        curr = s  # 현재 노드는 판매원
        while curr != '-' and money > 0:  # 노드가 루트 노드가 아니고 분배 할 돈이 있는 경우 반복
            pass_up = money // 10  # 분배금
            keep = money - pass_up  # 판매원이 챙길 배분하고 남은 나머지 금액
            total_profit[curr] += keep  # 이익금 갱신
            money = pass_up  # 분배받은 추천인이 위로 다시 분배하기 전 금액
            curr = node[curr]  # 현재 노드를 부모 노드로 갱신
    for e in enroll:
        answer.append(total_profit[e])
    return answer