[Programmers] ๋คํธ ๊ฒ์
https://school.programmers.co.kr/learn/courses/30/lessons/17682
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋ฌธ์ ํด๊ฒฐ
1. ์ฒ์์๋ for๋ฌธ์ผ๋ก ํ๋์ฉ ๋น๊ตํด์ ๊ณ์ฐํ๋ ค๋ค๊ฐ ๋ฐ๋ก,, ์ ์ด ์ ์ ๋์จ ์ซ์๋ฅผ ๊ฐ์ง๊ณ ์์ด์ผ ๋๋? ํด์ ํ๋ก ํ๊ธฐ ์์
2. bonus ๊ณ์ฐํ ๋ ํ๋์ฉ if๋ฌธ์ผ๋ก ๋น๊ตํ๋ค๊ฐ ์ฝ๋๊ฐ ๊ธธ์ด์ ธ์ ๋์ ๋๋ฆฌ๋ก ๋ณํํด์ฃผ๋๊น ํจ์ฌ ๊น๋ํด์ง๐คฉ
3. ๋ฌธ์ ๋ option์ด์๋๋ฐ,, ๋ฌธ์ ๋ฅผ ์ ๋ง ๋์ถฉ ๋ดค๋ค๊ฐ #์ผ ๋๋ ๊ทธ ๋ ์ซ์๋ง, *์ผ ๋ ์ด์ ์ซ์๊น์ง๋ง ๊ณฑํด์ง๋ ๊ฑธ ๋์ค์ ์ ๊ฒฐ๊ณผ๊ฐ ๊ณ์ ํ๋ฆฌ์ง? ํ๋ค๊ฐ ๋ค์ ๋ณด๊ณ ๊นจ๋ฌ์ ๐ ๋ฐ๋ณด
์ญ์ ๊ฒฐ๊ณผ๊ฐ ๋ค๋ฅผ ๋ ๋๋ฒ๊น ํ๋ฉด์ ๋ค์ ๋ณด๋ฉด,, ๋ค ๋ต์ด ์๋ค
#์ซ์์ ๋ณด๋์ค๋ฅผ ๋ ๊ฐ๋ฅผ ๋ชจ๋ ๊ธฐ์ตํ๊ณ ์์ด์ผ ๋๊ธฐ ๋๋ฌธ์ queue๋ก ํ์ด
def solution(dartResult):
score = 0
q = []
dartResult = dartResult.replace("10", "A")
bonus = {'S': 1, 'D': 2, 'T': 3}
for word in dartResult:
if word.isdigit() or word == 'A':
q.append(10 if word == 'A' else int(word))
elif word in ('S', 'D', 'T'):
q.append(q.pop() ** bonus[word])
elif word == '#':
q.append(q.pop() * (-1))
elif word == '*':
score = q.pop()
if q:
q.append(q.pop() * 2)
q.append(score * 2)
return sum(q)