[알고리즘] 다단계 칫솔 판매

MINSEOK KIM·2021년 8월 19일
0

알고리즘

목록 보기
4/12

프로그래머스 2021 Dev-Matching: 웹 백엔드 개발자(상반기) 코딩테스트에서 출제된 문제

다단계 칫솔 판매 문제

분석

다단계 구조로 물건을 판매하면 추천인이 판매금액 10%를 가져가는 구조
1. 판매자가 판매금액 1000원을 받으면
2. 판매자의 추천인1은 1000원의 10%인 100원을 가져가고
3. 추천인1의 추천인2는 100원의 10%인 10원을 가져간다.
결과로 판매자는 900원, 추천인1은 90원, 추천인2는 10원을 가진다.

  • 10원 미만으로 남으면 위의 추천인에게 돈을 주지 않는다.

코드

def solution(enroll, referral, seller, amount):
    answer,member, money = [], {}, {} # ①
    for i in range(len(enroll)): # member, money dict 만들기
        member[enroll[i]] = referral[i]
        money[enroll[i]] = 0
    for i in range(len(seller)): # 판매 하나씩 작업
        bill = amount[i]*100 # 가격 맞추기(12 => 1200)
        money[seller[i]] += bill*9//10 # 판매자는 10%를 추천인이게 주므로 90%는 가진다
        now = member[seller[i]] # 판매자의 추천인 저장
        while now!="-": # 판매자의 추천인이 "-" 일때까지
            bill = bill//10 # 10% 저장
            money[now] += bill-bill//10 # 현재 돈에서 10%뺀 가격을 현재 사람에게 줌 
            now = member[now] # 현재 사람 변경
            if bill<10: break # 남은 금액이 10원 미만이면 종료
    for i in enroll: answer.append(money[i]) # 저장된 money를 enroll순서대로 리스트에 저장
    return answer

판매가 진행되고 추천인에게 10%씩 현재 금액을 확인하며 진행하였다.

0개의 댓글