728x90
https://programmers.co.kr/learn/courses/30/lessons/77486?language=python3
def solution(enroll, referral, seller, amount):
answer = [0] * (len(enroll))
graph_dict = dict(zip(enroll,range(len(enroll))))
for i in range(len(seller)):
man = seller[i]
price = amount[i] * 100
while True:
node_num = graph_dict[man]
div = price // 10
answer[node_num] += price - div
# print(man, answer[node_num])
price = div
man = referral[node_num]
if man == "-": break
if div == 0: break
return answer
부모노드를 계속 찾아 올라가면서 가격을 갱신하면 된다.
루트노드('-')를 만나거나 div(price의 10%)가 0원보다 작을때 반복문을 빠져나오면 된다.
'STUDY > Algorithm' 카테고리의 다른 글
[프로그래머스] 로또의 최고 순위와 최저 순위 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기) (0) | 2021.05.04 |
---|---|
[프로그래머스] 행렬 테두리 회전하기 python, 2021 Dev-Matching: 웹 백엔드 개발자(상반기) (0) | 2021.05.04 |
[백준] 1074 Z python (0) | 2021.05.04 |
[백준] 11724 연결 요소의 개수 python (0) | 2021.05.04 |
[백준] 11723 집합 C (0) | 2021.05.04 |