후위표기법 을 기본 연산자로 변환해 계산하는 문제
- 2 1 + 3 * => (2 + 1) * 3으로 연산 해야한다.
활용 자료구조
문제해결 시나리오
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
# 반복문 돌며 숫자일 경우 stack에 추가
# 연산자가 나올 경우
# 이전 값 2개 pop 후 연산
# 연산한 값을 다시 스택에 넣기
stack = []
for token in tokens:
if token == '+':
a, b = stack.pop(), stack.pop()
stack.append(b + a)
elif token == '-':
a, b = stack.pop(), stack.pop()
stack.append(b - a)
elif token == '*':
a, b = stack.pop(), stack.pop()
stack.append(b * a)
elif token == '/':
a, b = stack.pop(), stack.pop()
stack.append(int(b / a))
else:
stack.append(int(token))
return stack.pop()
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
stack = []
op = {
'+': lambda a, b: a + b,
'-': lambda a, b: a - b,
'*': lambda a, b: a * b,
'/': lambda a, b: int(a/b)
}
for token in tokens:
if token in op:
b = stack.pop()
a = stack.pop()
stack.append(op[token](a, b))
else:
stack.append(int(token))
return stack.pop()