풀이 과정


  1. referral이 부모노드를 가리키므로, 반복해서 referral을 타고 올라가면서 -가 나올때까지 10%씩 삭감해주면서 더해주면 된다.

  2. 또는 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

+ Recent posts