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