여름의 서재

[프로그래머스] 다단계 칫솔 판매 (파이썬) 본문

알고리즘/프로그래머스

[프로그래머스] 다단계 칫솔 판매 (파이썬)

엉아_ 2021. 12. 17. 21:40
728x90

📕 문제

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

 

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

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

programmers.co.kr

 

💡 풀이법

1. 돈을 담을 리스트 money를 만든다.

2. 이름을 key, 인덱스를 value로 하는 딕셔너리 dict를 만든다.

3. seller와 amount를 돌면서 이름의 인덱스를 구하고 money에서 그 인덱스에 해당하는 위치(추천인)에 돈을 더한다.

계속해서 돈을 1/10씩 줄이면서 만약 돈이 0과 같아지거나 그 다음 추천인이 '-' 이면 while문을 멈춘다.

 

def solution(enroll, referral, seller, amount):
    money = [0 for _ in range(len(enroll))]
    dict = {}
    for i, e in enumerate(enroll):
        dict[e] = i
    for s, a in zip(seller, amount):
        m = a * 100
        while s != "-" and m > 0:
            idx = dict[s]
            money[idx] += m - m//10
            m //= 10
            s = referral[idx]
    return money

 

Comments