Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- leetcode 풀기
- 파이썬 프로그래머스
- 파이썬릿코드풀기
- python Leetcode
- 파이썬알고리즘풀기
- python 릿코드
- LeetCode
- 파이썬 알고리즘 풀기
- 릿코드 파이썬
- 코틀린기초
- 파이썬릿코드
- python xor
- 알고리즘풀기
- python zip_longest
- binary search
- 알고리즘풀이
- 파이썬 알고리즘
- leetcode풀이
- 파이썬 릿코드
- 릿코드풀기
- 파이썬알고리즘
- 상가수익률계산기
- 릿코드 풀기
- 잇츠디모
- python sorted
- python 알고리즘
- leetcode풀기
- 릿코드풀이
- python priority queue
- 릿코드
Archives
- Today
- Total
소프트웨어에 대한 모든 것
150. Evaluate Reverse Polish Notation 본문
반응형
문제)
150. Evaluate Reverse Polish Notation
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +, -, *, and /. Each operand may be an integer or another expression.
Note that division between two integers should truncate toward zero.
It is guaranteed that the given RPN expression is always valid. That means the expression would always evaluate to a result, and there will not be any division by zero operation.
Example 1:
Input: tokens = ["2","1","+","3","*"]
Output: 9
Explanation: ((2 + 1) * 3) = 9
Example 2:
Input: tokens = ["4","13","5","/","+"]
Output: 6
Explanation: (4 + (13 / 5)) = 6
Example 3:
Input: tokens = ["10","6","9","3","+","-11","*","/","*","17","+","5","+"]
Output: 22
Explanation: ((10 * (6 / ((9 + 3) * -11))) + 17) + 5
= ((10 * (6 / (12 * -11))) + 17) + 5
= ((10 * (6 / -132)) + 17) + 5
= ((10 * 0) + 17) + 5
= (0 + 17) + 5
= 17 + 5
= 22
Constraints:
- 1 <= tokens.length <= 104
- tokens[i] is either an operator: "+", "-", "*", or "/", or an integer in the range [-200, 200].
문제 풀이)
- 스택 자료구조 사용
- 토큰을 순회하면서 숫자면 스택에 푸시, 아니면 스택에서 pop 두번해서 연상 결과를 다시 스택에 푸시
솔루션1)
class Solution:
def evalRPN(self, tokens: List[str]) -> int:
operators = {'+', '-', '*', '/'}
# use stack
stack = []
for token in tokens:
if token in operators:
a = stack.pop()
b = stack.pop()
if token == '+':
c = a + b
elif token == '-':
c = b - a
elif token == '*':
c = a * b
else:
c = int(b / a)
stack.append(c)
else:
stack.append(int(token))
return stack[0]
반응형
'알고리즘 > LeetCode' 카테고리의 다른 글
2043. Simple Bank System (0) | 2022.12.17 |
---|---|
151. Reverse Words in a String (0) | 2022.12.17 |
1209. Remove All Adjacent Duplicates in String II (0) | 2022.12.15 |
2225. Find Players With Zero or One Losses (0) | 2022.12.15 |
451. Sort Characters By Frequency (0) | 2022.12.14 |
Comments