스터디/알고리즘

다단계 칫솔 판매

세졍 2024. 5. 30. 16:45

문제이해
enroll에 적힌사원들과 각위치의 사원들을 데리고온사람 , 즉 수익의 10%를 주어야하는사람이 
referral에 있고 seller에 판사람의 개수를 amount에서 보여줄때
enroll의 위치한 사람순서대로 수익 출력

 

 


def solution(enroll, referral, seller, amount):
    dic = {}  # 부모자식계 키가 자식이고 값이 부모인
    result = []
    for i in range(len(enroll)):
        dic[enroll[i]] = referral[i]
    money = {}
    for i in enroll:
        money[i] = 0
    for i in range(len(seller)):
        # 수익분배
        cash = amount[i] * 100
        current_name = seller[i]
        while current_name != '-' and cash>0 :
            parent_share = cash // 10
            money[current_name] += cash - parent_share
            cash = parent_share
            current_name = dic[current_name]
    for i in enroll:
        result.append(money[i])
    return result

enroll = ["john", "mary", "edward", "sam", "emily", "jaimie", "tod", "young"]
referral = ["-", "-", "mary", "edward", "mary", "mary", "jaimie", "edward"]
seller = ["young", "john", "tod", "emily", "mary"]
amount = [12, 4, 2, 5, 10]
print(solution(enroll, referral, seller, amount))
# enroll에 등록된순서대로 얼마 번지 출력하기
# 자식노드가 enroll , 부모노드가 referral이 된다
# 딕셔너리로 자식과 부모를 연결하는 것을 만드록 최종적으로 - 를 만나면 부모가 없으므로 멈춤

 

 

comment

1. cash> 0  이게 없으면 마지막 테스트케이스 3개 시간초과 뜸