풀이 과정
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
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ Lv 3 ] 하노이의 탑 (0) | 2021.07.18 |
---|---|
[ Lv 3 ] 섬 연결하기 (0) | 2021.07.17 |
[ Lv 3 ] 베스트앨범 (0) | 2021.07.16 |
[ Lv 3 ] N-Queen (0) | 2021.07.16 |
[ Lv 3 ] 2 x n 타일링 (0) | 2021.07.15 |