본문 바로가기
알고리즘/자료구조

[백준][Python] 1918번 후위 표기식

by 임짠짠 2022. 2. 17.
반응형
 

1918번: 후위 표기식

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

www.acmicpc.net

 

코드

inp = input()
stack = []
answer = []

for i in inp:
    if i == '(':
        stack.append(i)

    elif i == ')':
        while stack and stack[-1] != '(':
            answer.append(stack.pop())
        if stack[-1] == '(':
            stack.pop()

    elif i == '+' or i == '-':
        while stack and stack[-1] != '(':
            answer.append(stack.pop())
        stack.append(i)

    elif i == '*' or i == '/':
        while stack and (stack[-1] == '*' or stack[-1] == '/'):
            answer.append(stack.pop())
        stack.append(i)
        
    else:
        answer.append(i) 
while stack:
        answer.append(stack.pop())              
for i in answer:
    print(i,end='')

 

설명

'('가 나오면 스택에 담는다.

')'가 나오면 '('를 만날 때 까지 스택에 있는 값을 pop해주고 answer 스택에 담아준다.

연산자가 나오면 자신보다 우선순위가 높거나 같으면 그 값을 pop해주고 answer 스택으로 옮겨준 뒤 스택에 담아준다.

피연산자가 나오면 바로 answer 스택에 담아준다.

반응형

댓글