코딩테스트/프로그래머스

[프로그래머스][BFS] 다단계 칫솔 판매

박소민 2025. 5. 27. 16:50
다단계 칫솔 판매
 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

  • 내 풀이
    • 각각의 판매원을 key, 추천인을 value 로 넣어두고
    • 판매 내역을 하나씩 확인하면서
    • 판매값*0.1이 1 미만일 때까지 추천인 타고가면서 배분
      • 도중에 break 안걸어주면 시간초과
from collections import deque,defaultdict

def solution(enroll, referral, seller, amount):
    answer = []
    reference=defaultdict(list)
    money=defaultdict(int)
    for e,r in zip(enroll,referral):
        if r=="-":
            r="minho"
        reference[e].append(r)
    
    total=defaultdict(int)
    for s,a in zip(seller,amount):
        queue=deque([(s,a*100)])

        while queue:
            cur,x=queue.popleft()
            if x*0.1<1:
                money[cur]+=x
                break
            remain=int(x*0.1)
            money[cur]+=(x-remain)

            for nxt in reference[cur]:
                queue.append((nxt,remain))
        
    for e in enroll:
        answer.append(money[e])
         
    return answer