ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๋ฐ์ํ
๋ฌธ์
๋ฌธ์ ํ์ด
stack์ ํ์ฉํ๊ณ , ์ฐ์ฐ์์ ๋ํ ํน์ฑ์ ์ ์ดํดํ๋ฉด ์ฝ๊ฒ ๋ฌธ์ ๋ฅผ ํ ์ ์๋ค. ํผ์ฐ์ฐ์์ ์ฐ์ฐ์์ ๋ฐ๋ผ, stack์ push ํ ์ง๊ฐ ๊ฒฐ์ ๋๋ฉฐ ์ฐ์ฐ์์ ์ฐ์ ์์์ ๊ดํธ๋ฅผ ๊ณ ๋ คํ์ฌ ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
- ํผ์ฐ์ฐ์๊ฐ ์ ๋ ฅ๋๋ฉด stack์ pushํ์ง ์๊ณ ์ถ๋ ฅํ๋ค.
- ์ฐ์ฐ์๋ stack์ push ํ๋ค.
- stack์ push ํ๊ณ ์ ํ๋ ์ฐ์ฐ์๊ฐ ๋ซ๋ ๊ดํธ ' ) '๋ผ๋ฉด ์ฌ๋ ๊ดํธ ' ( '๋ฅผ ๋ง๋ ๋ ๊น์ง stack์์ popํ์ฌ ์ถ๋ ฅํ๋ค.
- stack top์ ์ฐ์ฐ์๊ฐ ํ์ฌ ์ ๋ ฅ๋ ์ฐ์ฐ์ ๋ณด๋ค ์ฐ์ ์์๊ฐ ๋๋ค๋ฉด, ์ฐ์ ์์๋ฅผ ์ํด ์ฐ์ ์ ์ผ๋ก ์ถ๋ ฅํ๋ค.
์ฆ, ์ฐ์ฐ์๋ stack์ ํผ์ฐ์ฐ์๋ ์ถ๋ ฅ์ ํ๋ฉด์, stack์ ์ฒ๋ฆฌํ ์ฐ์ฐ์๋ค์ ์ฐ์ ์์์ ๊ดํธ๋ฅผ ๊ณ ๋ คํ์ฌ์ผ ํ๋ค.
์ฝ๋
from sys import stdin
pri = {
'*': 2,
'/': 2,
'+': 1,
'-': 1,
'(': 0
}
if __name__ == "__main__":
math_expr = stdin.readline()[:-1]
stack = []
answer = ''
for c in '(' + math_expr + ')':
if c.isalpha():
answer += c
elif c == '(':
stack.append(c)
elif c == ')':
while True:
op = stack.pop()
if op == '(':
break
answer += op
else:
while stack and pri[c] <= pri[stack[-1]]:
answer += stack.pop()
stack.append(c)
print(answer)
728x90
๋ฐ์ํ
'๐จโ๐ป ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค: 11655 ROT13 (0) | 2020.06.24 |
---|---|
๋ฐฑ์ค: 1935 ํ์ ํ๊ธฐ์2 (0) | 2020.06.24 |
๋ฐฑ์ค: 10799 ์ ๋ง๋๊ธฐ (0) | 2020.06.23 |
๋ฐฑ์ค: 17413 ๋จ์ด ๋ค์ง๊ธฐ 2 (0) | 2020.06.23 |
๋ฐฑ์ค: 17299 ์ค๋ฑํฐ์ (0) | 2020.06.23 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ