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]
)

 

๐Ÿ“•๋ฌธ์ œ ํ™•์ธ

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

๋ฐ˜์‘ํ˜•
๋Œ“๊ธ€์ˆ˜0