후위표기식은 늘 stack을 사용하여 풀이한다.
a = input()
stack = [] #스택
res='' #출력
for x in a:
if x.isalpha(): #피연산자인지 아닌지 확인
res+=x
else:
if x == '(':
stack.append(x)
elif x == '*' or x =='/':
while stack and (stack[-1]=='*' or stack[-1]=='/'):
res+=stack.pop()
stack.append(x)
elif x == '+' or x == '-':
while stack and stack[-1] != '(':
res += stack.pop()
stack.append(x)
elif x == ')':
while stack and stack[-1] != '(':
res+=stack.pop()
stack.pop()
#스택안에 남아있는 값들 pop
while stack:
res += stack.pop()
print(res)
'practivceAlgorithm > 백준' 카테고리의 다른 글
[백준][Python] 17484 진우의 달 여행 (0) | 2021.09.23 |
---|---|
[백준][Python] 16938 캠프준비 (0) | 2021.09.20 |
[백준][Python] 17129 윌리암슨 수액빨이딱따구리가 정보섬에 올라온 이 (0) | 2021.09.19 |
[백준][Python] 21318 피아노체조 (0) | 2021.09.19 |
[백준][Python] 17266 어두운 굴다리 (0) | 2021.09.19 |