Programmers - 다단계 칫솔 판매

SJ0000·2022년 6월 16일

문제 링크

get(i,money) : 수익의 90%를 i가 먹고 10%를 referral[i] 에게 배분.
referral[i]에게 배분할때도 90%/10% 규칙이 적용되니까 재귀호출 사용.

def solution(enroll, referral, seller, amount):
    n = len(enroll)
    name_id = dict()
    name_id["-"] = -1
    profit = [0 for i in range(n)]
    for (id, name) in enumerate(enroll):
        name_id[name] = id
    referral = list(map(lambda name: name_id[name], referral))
    seller = list(map(lambda name: name_id[name], seller))
    amount = list(map(lambda x: x*100, amount))

    def get(i, money):
        if i == -1:
            return

        referral_money = money//10
        my_money = money-referral_money

        profit[i] += my_money
        if referral_money > 0:
            get(referral[i], referral_money)

    for (i, money) in zip(seller, amount):
        get(i, money)

    return profit
profile
잘하고싶은사람

0개의 댓글