다단계 칫솔 판매
프로그래머스
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
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스][BFS] 혼자 놀기의 달인 (0) | 2025.05.29 |
|---|---|
| [프로그래머스][그리디][백트래킹] 광물 캐기 (8) | 2025.05.28 |
| [프로그래머스][플로이드-워셜] 순위 (0) | 2025.05.22 |
| [프로그래머스] 수식 최대화 (0) | 2025.05.22 |
| [프로그래머스][그래프] 가장 먼 노드 (0) | 2025.05.21 |