Algorithm Problem/Python

[python] ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€ - 닀단계 칫솔 판맀(2021 Dev-Matching: μ›Ή λ°±μ—”λ“œ 개발자(μƒλ°˜κΈ°))

deo2kim 2021. 8. 23. 23:12
λ°˜μ‘ν˜•

πŸ€”λ¬Έμ œ ν•΄κ²°

  1. νŒλ§€μ›μ„ ν‚€, μΆ”μ²œμΈκ³Ό μˆ˜μ΅μ„ λ°Έλ₯˜λ‘œ ν•˜λŠ” λ”•μ…”λ„ˆλ¦¬λ₯Ό λ§Œλ“ λ‹€. (enroll, referral)
  2. 칫솔을 νŒλ§€ν•œ μ‚¬λžŒμ„ μ„ νƒν•˜κ³ , μΆ”μ²œμΈκ³Ό μˆ˜μ΅μ„ 계속 λ‚˜λˆˆλ‹€.

 

πŸ’¨ 보톡 μ΄λ ‡κ²Œ ν•˜λ©΄ λ§ˆμ§€λ§‰ 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]
)

 

πŸ“•λ¬Έμ œ 확인

좜처: ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

λ°˜μ‘ν˜•