STUDY/Algorithm

[프로그래머스] 다단계 칫솔 판매 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기)

sinawi95 2021. 5. 4. 21:34
728x90

https://programmers.co.kr/learn/courses/30/lessons/77486?language=python3

 

코딩테스트 연습 - 다단계 칫솔 판매

민호는 다단계 조직을 이용하여 칫솔을 판매하고 있습니다. 판매원이 칫솔을 판매하면 그 이익이 피라미드 조직을 타고 조금씩 분배되는 형태의 판매망입니다. 어느정도 판매가 이루어진 후,

programmers.co.kr

 

def solution(enroll, referral, seller, amount):
    answer = [0] * (len(enroll))
    graph_dict = dict(zip(enroll,range(len(enroll))))
    
    for i in range(len(seller)):
        man = seller[i]
        price = amount[i] * 100
        while True:
            node_num = graph_dict[man]
            div = price // 10
            answer[node_num] += price - div
            # print(man, answer[node_num])
            price = div
            man = referral[node_num]
            if man == "-": break
            if div == 0: break
            
    return answer

부모노드를 계속 찾아 올라가면서 가격을 갱신하면 된다.

루트노드('-')를 만나거나 div(price의 10%)가 0원보다 작을때 반복문을 빠져나오면 된다.