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