Algorithm Problem/Python
[python] νλ‘κ·Έλλ¨Έμ€ - λ€λ¨κ³ μΉ«μ ν맀(2021 Dev-Matching: μΉ λ°±μλ κ°λ°μ(μλ°κΈ°))
deo2kim
2021. 8. 23. 23:12
λ°μν
π€λ¬Έμ ν΄κ²°
- ν맀μμ ν€, μΆμ²μΈκ³Ό μμ΅μ λ°Έλ₯λ‘ νλ λμ
λ리λ₯Ό λ§λ λ€. (enroll, referral)
- μΉ«μμ ν맀ν μ¬λμ μ ννκ³ , μΆμ²μΈκ³Ό μμ΅μ κ³μ λλλ€.
π¨ λ³΄ν΅ μ΄λ κ² νλ©΄ λ§μ§λ§ 3κ°μ μΌμ΄μ€μμ μκ°μ΄κ³Όκ° λ°μνλ€.
κ·Έ μ΄μ λ μμ΅μ λ μ΄μ λλ μ μλ μνμ¬λ μΆμ²μΈμ λ°λΌμ 0μμ μμ΅μ λλ κ°λ μ²μ νκΈ° λλ¬Έ
λ°λΌμ λ μ΄μ μμ΅μ λλ μ μλ μν©μ΄ λλ©΄ λ°λ³΅λ¬Έμ λ©μΆ°μ€λ€.
π»μμ€ μ½λ
def solution(enroll, referral, seller, amount):
answer = []
multistages = {'-': ['', 0]}
for e, r in zip(enroll, referral):
multistages[e] = [r, 0]
for s, a in zip(seller, amount):
a *= 100
while s != '-': # '-': λ―ΌνΈ, λ―ΌνΈ λ§λλ©΄ κ·Έλ§
if a == 0: # μμ΅μ΄ 0μμ΄μ΄λ κ³μ μΆμ²μΈκ³Ό λΆλ°°λ₯Ό νκΈ° λλ¬Έμ μκ°μ ν¨μ¨μ μν΄ κ·Έλ§
break
multistages[s][1] += a - a // 10
a //= 10
s = multistages[s][0]
for e in enroll:
answer.append(multistages[e][1])
return answer
solution(
["john", "mary", "edward", "sam", "emily", "jaimie", "tod", "young"],
["-", "-", "mary", "edward", "mary", "mary", "jaimie", "edward"],
["young", "john", "tod", "emily", "mary"],
[12, 4, 2, 5, 10]
)
πλ¬Έμ νμΈ
μΆμ²: νλ‘κ·Έλλ¨Έμ€
λ°μν