BOJ/Python

백준 1918번 후위 표기식 파이썬

띵지니어 2022. 3. 12. 23:59
반응형

https://www.acmicpc.net/problem/1918

 

1918번: 후위 표기식

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

www.acmicpc.net

 

내 답안

import sys
input = sys.stdin.readline
tokens = input().rstrip()
result = []
op = []
priority = {'*': 2, '/': 2, '+': 1, '-': 1, '(': 0}
for i in tokens:
if i.isalpha():
result.append(i)
elif i == '(':
op.append(i)
elif i == ')':
while op[-1] != '(':
result.append(op.pop())
op.pop()
else:
# i가 op[-1]의 우선순위와 같거나 보다 작으면
# i의 우선순위가 더 커질때까지 pop
while op and priority[i] <= priority[op[-1]]:
result.append(op.pop())
op.append(i)
while len(op) != 0:
result.append(op.pop())
print(''.join(result))

 

학교에선 C++로 후위 표기식을 공부했었다.

파이썬으로 코드를 짜보니 좀 더 깔끔한 느낌이 들었다.

연산자 우선순위는 딕셔너리를 통해 코드를 짰다.

priority = {'*': 2, '/': 2, '+': 1, '-': 1, '(': 0}
반응형
목차(index)