문제
https://school.programmers.co.kr/learn/courses/30/lessons/77486
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
딕셔너리를 활용하여 풀었다.
첫째로 자신을 추천해준 사람을 저장해주는 recommender
두번째로 판매원들마다 수익을 저장할 income 이다.
enroll과 referral 을 활용하여 recommender 를 key는 추천받은 사람, value는 추천해준 사람으로 초기화 하고,
이 때 income도 판매원마다 0으로 초기화 해준다.
이후에 수익을 계산해준다.
우선 10프로가 1원 미만이라면 바로 자신에게 추가해주고 다음 값으로 넘어가면된다.
만약 1원 이상이라면 자신에게는 90프로의 값만 더하고 부모에게 10프로를 넘기고 다시 반복하면 된다.
단, 부모가 민호일때 ("-" 일때) 는 굳이 처리할 필요 없기에 반복문을 탈출하면 된다.
코드
def solution(enroll, referral, seller, amount):
recommender = {} # 추천인
income = {} # 판매원들 수익
# 추천인 및 수익 초기화
for i in range(len(enroll)):
recommender[enroll[i]] = referral[i]
income[enroll[i]] = 0
# 수익 계산
for i in range(len(seller)):
employee = seller[i]
money = amount[i] * 100
# 부모까지 찾아 올라가며 수익 처리
while True:
ten_percent = int(money * 0.1)
# 10프로 이하라면 상위로 올려줄 필요 없다.
if ten_percent < 1:
income[employee] += money
break
income[employee] += (money - ten_percent)
# 부모가 민호라면 break
if recommender[employee] == "-":
break
employee = recommender[employee]
money = ten_percent
return list(income.values())
후기
아주 단순했다.
'프로그래머스' 카테고리의 다른 글
LV2 구명보트 (Python) (0) | 2023.11.08 |
---|---|
LV3 110옮기기 (Python) (0) | 2023.11.06 |
LV3 스티커 모으기 (2) (Python) (1) | 2023.11.01 |
LV3 풍선 터트리기 (Python) (1) | 2023.10.24 |
LV2 괄호 변환 (Java) (1) | 2023.10.09 |