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]
)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: ํ๋ก๊ทธ๋๋จธ์ค
๋ฐ์ํ