📖  문제

https://programmers.co.kr/learn/courses/30/lessons/77486

 

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

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

programmers.co.kr

 

💻  코드

from collections import defaultdict


def divide_revenue(revenue, seller, recommend, amount):
    yours = amount // 10
    mine = amount - yours
    revenue[seller] += mine
    if yours > 0 and recommend[seller] != '-':
        divide_revenue(revenue, recommend[seller], recommend, yours)


def solution(enroll, referral, seller, amount):
    recommend = dict()
    for i in range(len(enroll)):
        recommend[enroll[i]] = referral[i]
    revenue = defaultdict(int)
    for i, sr in enumerate(seller):
        divide_revenue(revenue, sr, recommend, amount[i] * 100)
    return [revenue[e] for e in enroll]

 

🙌  한마디

문제 설명보고 트리(Tree)라 어려울 줄 알았는데 딕셔너리에 저장되어있어 수월했다.

재귀 방식으로 풀었다. 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기