알고리즘[Python]/프로그래머스
[ Lv 3 ] 다단계 칫솔 판매
병훈1234
2021. 7. 17. 11:08
풀이 과정
referral이 부모노드를 가리키므로, 반복해서 referral을 타고 올라가면서 -가 나올때까지 10%씩 삭감해주면서 더해주면 된다.
또는 10%가 0원이 된다면 그냥 더한 후 바로 종료해주면 된다.
def solution(enroll, referral, seller, amount):
answer = [0] * len(enroll)
people_idx = {key:i for i,key in enumerate(enroll)}
for idx, sell in enumerate(seller):
temp = 100 * amount[idx]
who = people_idx[sell]
while True:
answer[who] += temp - temp // 10
if temp // 10 == 0 or referral[who] == '-':
break
temp = temp // 10
who = people_idx[referral[who]]
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges