문제
알고리즘
- 조직 구성원과 추천인을 딕셔너리형으로 만든다.
- 조직 구성원과 구성원들의 이익금을 딕셔너리형으로 만든다.
- 반복문을 통해 판매원을 확인한다.
- 확인 중인 판매원의 판매 금액을 가지고 반복문을 통해 그 판매원의 추천인을 확인한다.
- 현재 판매 금액이 10원보다 적다면 현재 조직 구성원에게 돈을 다 주고 반복을 멈춘다.
- 현재 판매 금액이 10원보다 크다면 판매금액에 10%를 제외하고 현재 조직 구성원에게 돈을 준다.
- 현재 조직 구성원의 추천인이 민호라면 반복을 멈춘다.
- 현재 조직 구성원의 추천인이 민호가 아니라면 추천인에게 남은 돈을 주고 위와 같이 다시 반복한다.
코드
def solution(enroll, referral, seller, amount):
parent = dict(zip(enroll, referral))
answer = dict(zip(enroll, [0 for _ in range(len(enroll))]))
# 반복문을 통해 판매원을 확인
for i in range(len(seller)):
money = amount[i] * 100 # 판매수량 * 100
target = seller[i] # 조직 구성원(현재 판매원)
# 반복문을 통해 판매원의 추천인을 확인
while True:
# 현재 판매금액이 10원보다 작다면 현재 조직 구성원에게 돈을 다 주고 반복을 멈춘다.
if money < 10:
answer[target] += money
break
# 현재 판매금액이 10원보다 크다면
else:
# 10%를 제외하고 현재 조직 구서원에게 돈을 준다.
send = money // 10
mine = money - send
answer[target] += mine
# 현재 조직 구성원의 추천인이 민호라면 반복을 멈춘다.
if parent[target] == "-":
break
# 현재 조직 구서원의 추천인이 민호가 아니라면 추천인에게 남은돈을 준다.
money = send
target = parent[target]
# list형식으로 answer의 values 값을 출력
return list(answer.values())
github
'CodingTest > Programers' 카테고리의 다른 글
[programers] 프로그래머스(파이썬) : 소수 만들기 (0) | 2022.04.24 |
---|---|
[programers] 프로그래머스(파이썬) : 신고 결과 받기 (0) | 2022.04.23 |
[programers] 프로그래머스 카카오(파이썬) : [1차] 다트 게임 (0) | 2022.01.14 |
[programers] 프로그래머스 카카오(파이썬) : [3차] n진수 게임 (0) | 2022.01.07 |
[programers] 프로그래머스 카카오(파이썬) : [1차] 비밀지도 (0) | 2022.01.06 |