1918번: 후위 표기식

첫째 줄에 중위 표기식이 주어진다. 단 이 수식의 피연산자는 A~Z의 문자로 이루어지며 수식에서 한 번씩만 등장한다. 그리고 -A+B와 같이 -가 가장 앞에 오거나 AB와 같이 *가 생략되는 등의 수식

www.acmicpc.net


피연산자들은 바로 print, 연산자들은 우선순위 고려해 스택에 저장

)가 나오면 (가 나올때까지 연산자 프린트

  1. 피연산자라면 출력
  2. ( 라면 스택에 저장
  3. )라면 ( 나올때까지 연산자 출력
  4. 연산자라면 스택에 있는 연산자들중 우선순위가 낮은 것들 출력
  5. 나머지 남아있는 연산자 출력
import sys
input = sys.stdin.readline

prior = {"/": 2, "*": 2, "+": 1, "-": 1, "(": 0}
stack = []
_str = input().rstrip()

for s in _str:
    if s.isalpha():
        print(s, end="")
    elif s == "(":
        stack.append(s)
    elif s == ")":
        while True:
            temp = stack.pop()
            if temp == "(":
                break
            print(temp, end="")
    else:
        while stack and prior[stack[-1]] >= prior[s]:
            print(stack.pop(), end="")
        stack.append(s)

while stack:
    print(stack.pop(), end="")
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기