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

gmlwlswldbs·2021년 11월 26일
0

코딩테스트

목록 보기
86/130
def solution(enroll, referral, seller, amount):
    answer = [0] * len(enroll)
    dic1 = {}
    dic2 = {}
    for i in range(len(enroll)):
        dic2[enroll[i]] = i
    for i in range(len(enroll)):
        t = referral[i]
        tmp = []
        while True:
            if t == '-':
                break
            tmp.append(t)
            t = referral[dic2[t]]
        if len(tmp) != 0:
            dic1[enroll[i]] = tmp
    for i in range(len(seller)):
        sell = amount[i]*100
        div = int(sell*0.1)
        answer[dic2[seller[i]]] += (sell - div)
        t = seller[i]
        if t not in dic1:
            continue
        for j in range(len(dic1[t])):
            a = dic2[dic1[t][j]]
            ndiv = int(div*0.1)
            answer[a] += (div - ndiv)
            div = ndiv
            if div == 0:
                break
    return answer

시간 초과가 계속 나왔는데
마지막에 남은 돈의 양이 0일때 반복문을 빠져나오게 해줘서 통과됨

0개의 댓글