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

nayoon·2021년 5월 6일
0

Algorithm

목록 보기
37/55

다단계 칫솔 판매

문제는 부디 링크로 가셔서 보시길..

python

def solution(enroll, referral, seller, amount):
    answer = []
    _enroll = {}
    result = {}
   
    result["-"] = 0
    # enroll과 referral은 길이가 같다.
    for e, r in zip(enroll, referral):
    	# _enroll은 key를 데려온 추천인을 value에 저장한다.
        _enroll[e] = r
        # result는 해당하는 사람이 얼마를 벌었는지를 본다.
        result[e] = 0
       
	# seller와 amount는 길이가 같다.
    for s, a in zip(seller, amount):
        a_mount = a * 100
        sell_er = s
        result[sell_er] += a_mount
        while True:
            a_mount = a_mount // 10
            # 10%가 1원보다 안되면 더하지 않고 while문을 끝낸다.
            if a_mount < 1:
                break
            else:
            	# 추천인에게 본인의 10%를 준다.
                result[sell_er] -= a_mount
                result[_enroll[sell_er]] += a_mount
                sell_er = _enroll[sell_er]
            if sell_er == "-":
                break
           
    for r in result:
        answer.append(result[r])
    answer = answer[1:]
    return answer

javascript

function solution(enroll, referral, seller, amount) {
    var answer = [];
    var recommend = {};
    var result = {};
    var a = 0;
    var s = '';
    result['-'] = 0;
    for (var key in enroll){
        recommend[enroll[key]] = referral[key];
        result[enroll[key]] = 0;
    }
    for (var _ in seller) {
        a = amount[_] * 100;
        s = seller[_]
        result[s] += a
        while (true) {
            a = parseInt(a / 10);
            if (a < 1) {
                break;
            } else {
                result[s] -= a;
                result[recommend[s]] += a;
                s = recommend[s];
            }
            if (s == '-')
                break;
        }
    }
    for (var i = 0; i < enroll.length; i++) {
        answer.push(result[enroll[i]]);
    }
    return answer;
}
profile
뚜벅뚜벅 열심히 공부하는 개발자

0개의 댓글