Post

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

문제


  • 프로그래머스 다단계 칫솔 판매 (LV3)

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

처음 문제를 보았을 때, 굉장히 아찔했다.
문제 길이가 엄청나게 길고 제한 사항도 많아서 겁부터 먹었는데 읽어보니 생각보다는 덜 복잡했다.
요약하면 트리의 각 노드에서 자신의 이익금을 부모 노드로 점차 타고 올라가면서 이익금을 10프로씩 분배하였을 때 전체 이익 배분 현황을 구하는 문제였다.

SCR-20241105-nhqg

내 코드


프로그래머스에서 문제를 거의 풀어보지 않아서 입출력 형식이 익숙치 않았다.
각각의 이익금을 반복문을 통해서 돌면서 분배할 이익금을 계산하는 형식으로 풀어보았다.
구글링을 통해서 zip()을 통해서 간편하게 딕셔너리의 값을 채울 수 있다는 것을 알았다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import math

def solution(enroll, referral, seller, amount):
    parent = dict(zip(enroll, referral))
    ans = dict(zip(enroll, [0 for _ in range(len(enroll))]))
    
    for i in range(len(seller)):
        money = amount[i] * 100
        now = seller[i]
    
        while True:
            if money < 10:
                ans[now] += money
                break
            else:
                ans[now] += math.ceil(money * 0.9)
                if parent[now] == "-":
                    break
                money = math.floor(money * 0.1)
                now = parent[now]

    return list(ans.values())

day9

백준에서만 문제를 풀지 말고 프로그래머스나 다양한 플랫폼에서 문제를 풀어보면서 다양한 환경을 경험해 보아야 겠다는 생각이 들었다.

This post is licensed under CC BY 4.0 by the author.