전위 표현식 확인용 사이트 : https://www.free-online-calculator-use.com/infix-to-prefix-converter.html
전위표현식은 후위 표현식과 유사하지만 입력받는 연산식을 뒤집어서 검사해주는 방식을 사용해준다.
처음에 입력받은 연산식을 뒤집고, 연산자들을 스택에 담고 피연산자는 바로 결과에 적어준다.
모든 동작이 끝나면 결과를 다시 뒤집어준다. 그 결과가 바로 전위표현식이 된다.
from collections import deque
def prefix_eval(inn):
inn = inn[::-1]
stack = deque()
expression = ''
math = ['+','-','*','/','(',')']
for i in inn:
if i not in math:
expression+=i
else:
if i == math[2] or i== math[3]:
stack.append(i)
elif i == math[-1]:
stack.append(i)
elif i == math[4]:
while stack:
out = stack.pop()
if out == ')':
break
expression += out
elif i == math[0] or i == math[1]:
if stack and stack[-1] not in ['+','-',')']:
while stack:
out = stack.pop()
if out in ['+','-',')']:
stack.append(out)
break
expression+=out
stack.append(i)
else:
stack.append(i)
# print('i :',i, '## st :',stack,'## ex :',expression)
while stack:
expression+=stack.pop()
return expression[::-1]
'Python' 카테고리의 다른 글
파이썬 bitnami wampstack로 CGI 연결하기 (0) | 2023.01.12 |
---|---|
[python] 슬라이싱을 이용한 copy (0) | 2022.12.14 |
부동소수점 (0) | 2022.09.11 |
BeautifulSoup - 특정 태그값 가져오기 (0) | 2022.07.20 |
파이썬 - enumerate (0) | 2022.05.15 |
댓글