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 |
Tags
- 파이썬알고리즘
- binary search
- 릿코드
- leetcode풀이
- leetcode풀기
- 잇츠디모
- 코틀린기초
- 릿코드 파이썬
- python 알고리즘
- python sorted
- 파이썬릿코드풀기
- 알고리즘풀기
- 릿코드풀기
- 파이썬 프로그래머스
- 상가수익률계산기
- 파이썬 릿코드
- 파이썬 알고리즘 풀기
- python 릿코드
- leetcode 풀기
- 알고리즘풀이
- 파이썬 알고리즘
- LeetCode
- 릿코드 풀기
- 릿코드풀이
- python Leetcode
- 파이썬릿코드
- python xor
- python zip_longest
- 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