https://school.programmers.co.kr/learn/courses/30/lessons/77486
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
def solution(enroll, referral, seller, amount):
answer = [0] * len(enroll) # 각 판매원이 얻은 이익금
# 이름을 인덱스로 빠르게 찾기 위해 딕셔너리를 사용
enroll_index = {name: i for i, name in enumerate(enroll)} # {"name": 0, ...}
def divide(money, person):
if person == "-" or money < 1: # 추천인이 없거나 나눌 돈이 없을 때 종료
return
idx = enroll_index[person]
referral_fee = money // 10
answer[idx] += money - referral_fee # 90%는 자신에게
# 나머지 10%를 추천인에게 전달
divide(referral_fee, referral[idx])
# 각 판매자의 수익 분배
for i in range(len(seller)):
idx = enroll_index[seller[i]] # enroll_index에 name을 넣으면 해당하는 index를 반환해줌!
profit = amount[i] * 100
divide(profit, seller[i])
return answer
코드를 더 파이썬답게 작성하는 노력을 해봐야겠다.
계속 쓰면서 외우기! 응용할 수 있을 때까지!
'프로그래머스' 카테고리의 다른 글
프로그래머스 42842. 카펫 (0) | 2024.11.17 |
---|---|
프로그래머스 42840. 모의고사 (0) | 2024.11.16 |
프로그래머스 84512. 모음사전 (0) | 2024.11.04 |
프로그래머스 43236. 징검다리 (0) | 2024.11.03 |
프로그래머스 42586. 기능개발 (0) | 2023.11.15 |