인프런 커뮤니티 질문&답변
섹션 5 3번 후위표기식
작성
·
129
0
import sys
a=input()
stack=[] # stack.top의 우선순위가 자기보다 크지 않을 때 pop
res=""
for x in a:
if x.isdecimal():
res+=x
else: # 문자일 경우
if x=='(': # 일단 append
stack.append(x)
elif x=='*' or x=='/' or x=='+' or x=='-':
while stack and (stack[-1]=='*' or stack[-1]=='/'): # stack.top의 우선순위가 작지 않을 때 pop
res+=stack.pop()
stack.append(x)
elif x==')':
while stack and stack[-1]!='(': # 괄호 안의 연산자
res+=stack.pop()
stack.pop()
while stack:
res+=stack.pop()
print(res)
선생님이 말씀하신 대로 코드를 짰는데 검사를 했을 때 앞에 두개 빼고는3~5번은 wrong answer 라고 나오네요.
제가 in3을 입력으로 넣어서 출력한 후위표기식을, 다시 중위표기식으로 바꿨을때와(손으로 직접),
out3의 후위표기식을 중위표기식으로 바꿨을 때(손으로 직접) 결과가,
in3으로 동일합니다.
동일한 중위표기식에 대한 후위표기식이 1개 이상이 아닐까요?
제가 틀렸다면 어떤 부분이 문제인지 지적 부탁드립니다
답변 1
0
김태원
지식공유자
+, - 연산과 *, / 연산은 분리해서 처리해야 합니다. 위 코드대로 하면 현재 +, - 연산일 때 스택에 먼저 들어가 있는 +, -연산을 pop해야 하는데 pop을 하지 않고 있습니다.





