Koala - 12기/코딩테스트 준비 스터디
[백준/Python] 1918번 : 후위 표기식
devhex
2023. 10. 30. 02:10
문제
https://www.acmicpc.net/problem/1918
풀이
중위표기식에서 후위표기식으로 변환하는 것은 스택을 활용하여 풀 수 있다.
후위표기식의 방식에 따라, 계산할 문자를 먼저 문자열에 두고 기호는 스택에 넣어두었다가 출력하면 된다.
하지만, 연산자의 우선순위에 의해 추가적으로 고려해주어야 한다.
우선순위가 더 낮은 연산자가 나오면 더 높은 연산자를 먼저 처리해준다.
또한, 괄호가 나오는 경우 괄호가 닫히는 순간에 괄호가 시작되었던 부분까지 고려하여 변환하면 된다.
코드
formula = input()
precedence = {'+': 1, '-': 1, '*': 2, '/': 2}
stack = []
postfix = ''
for c in formula:
if c.isalpha():
postfix += c
elif c == '(':
stack.append(c)
elif c == ')':
while stack and stack[-1] != '(':
postfix += stack.pop()
stack.pop()
else:
while stack and stack[-1] != '(' and precedence[c] <= precedence[stack[-1]]:
postfix += stack.pop()
stack.append(c)
while stack:
postfix += stack.pop()
print(postfix)