문제는 백준에서 확인 할 수 있다.
중위표현식 -> 후위표현식
def solution(data):
priority = {'+':1 , '-':1, '*':2, '/':2, '(':0, ')':0}
arr = []
stack = []
for elem in data:
# print(stack, elem)
if elem.isalpha():
arr.append(elem)
elif elem == '(':
stack.append(elem)
elif elem == ')':
while len(stack) > 0 and stack[-1] != '(':
arr.append(stack.pop())
if len(stack) > 0:
stack.pop()
else:
# 우선순위에 따라 연산자를 출력
while(len(stack)>0 and priority[stack[-1]] >= priority[elem]):
arr.append(stack.pop())
stack.append(elem)
# 스택에 남은 연산자들을 출력
else:
while(len(stack)>0):
arr.append(stack.pop())
# print(arr)
return ''.join(arr)
if __name__ == "__main__":
data = list(input())
ret = solution(data)
print(ret)