[Python] 프로그래머스 2021 Dev-Matching: 웹 백엔드 개발자(상반기) : 다단계 칫솔 판매

송진영·2022년 10월 22일
0

프로그래머스-python

목록 보기
20/22

프로그래머스 2021 Dev-Matching: 웹 백엔드 개발자(상반기) : 다단계 칫솔 판매

문제 풀이

나는 이 문제가 Level 3 문제였지만 kakao Level 3 문제에 비하면 크게 어렵지 않다고 생각했다.

  1. 판매원과 추천인을 기록하는 conn dictionary, 총 이익금을 기록하는 total dictionary를 만든다.
    Ex 1. conn[판매원] = 추천인
    Ex 2. total[판매원] = 총 이익금

  2. 판매에 따른 수익 배분 반복문을 만들어 다음 배분자가 없거나(conn[판매원] = "-") 다음 배분자에게 보낼 돈이 0이라면 반복문을 종료한다.

  • 판매원이 1명일 경우의 예외처리도 만들어 준다.

def solution(enroll, referral, seller, amount):
    answer = []
    conn = {} # 판매원과 추천인
    total = {} # 총 이익금
    
    for i in range(len(enroll)):
        conn[enroll[i]] = referral[i]
        total[enroll[i]] = 0
        
    for j in range(len(seller)):
        per = seller[j] # 수익 배분자
        price = amount[j] * 100 # 이익금
        send = -1 # 다음 배분자에게 보낼 이익금
        if conn[per] == "-":
            total[per] += price - (price//10)
        else:
            while True:
                if per == "-" or send == 0:
                    break
                if price >= 10:
                    send = price // 10
                else:
                    send = 0
                total[per] += price - send
                price = send            
                per = conn[per]
    for x in enroll:
        answer.append(total[x])
    return answer
profile
못하는 건 없다. 단지 그만큼 노력을 안 할 뿐이다.

0개의 댓글