이번에는 후위 표현식으로 되어있는 수식을 계산하는 것을 스택을 활용하여 구현해보도록 하겠습니다!
- 피연산자를 만나면 스택에 push
- 연산자를 만나면 스택으로부터 2개의 피연산자를 뽑아내서 그 연산을 적용
- 중간에 만나는 연산을 행했을 때 그 연산 결과는 다시 스택에 넣어 다음 연산에 적용
예제
A B + C D + *
def splitTokens(exprStr):
수가 들어있는 수식을 수/기호로 변환하여 리스트로 출력
def splitTokens(exprStr):
tokens = []
val = 0
valProcessing = False
for c in exprStr:
if c == ' ':
continue
if c in '0123456789':
val = val * 10 + int(c)
valProcessing True
else:
# 수의 연산이 위에서 끝났으므로 tokens에 val을 입력
if valProcessing:
tokens.append(val)
val = 0
valProcessing = False
tokens.append(c)
# 마지막에 있던 게 수일 경우
if valProcessing:
tokens.append(val)
return tokens