본문 바로가기
Python

파이썬 - 전위 표현식

by 청원뿔세포 2022. 11. 13.

전위 표현식 확인용 사이트 : https://www.free-online-calculator-use.com/infix-to-prefix-converter.html

 

Infix to Prefix Converter | Interactive Step-By-Step Stack Tutorial

Converts an infix expression to a prefix expression using stack, and displays the conversion process for each scanned character.

www.free-online-calculator-use.com

 

전위표현식은 후위 표현식과 유사하지만 입력받는 연산식을 뒤집어서 검사해주는 방식을 사용해준다.

처음에 입력받은 연산식을 뒤집고, 연산자들을 스택에 담고 피연산자는 바로 결과에 적어준다.

모든 동작이 끝나면 결과를 다시 뒤집어준다. 그 결과가 바로 전위표현식이 된다.

 

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

댓글