https://leetcode.com/problems/evaluate-reverse-polish-notation/description
Q. 주어진 token과 같은 수식이 주어질 때, 결과를 도출 하여 반환하라.
Solution.
stack을 처리하는 방식의 1차원 적인 문제.
기호가 나오면 가장 가까운 숫자 2개를 pop해서 stack에 다시 집어 넣고
다음 연산에 사용한다.
public int EvalRPN(string[] tokens)
{
Stack<int> buff = new Stack<int>();
for(int q = 0; q < tokens.Length; ++q)
{
string cur = tokens[q];
if(cur=="+" || cur=="-" || cur=="*" || cur=="/")
{
int v2 = buff.Pop();
int v1 = buff.Pop();
switch(cur)
{
case "+": buff.Push(v1+v2); break;
case "-": buff.Push(v1-v2); break;
case "*": buff.Push(v1*v2); break;
case "/": buff.Push(v1/v2); break;
}
}
else
{
int value;
if(int.TryParse(cur, out value))
buff.Push(value);
}
}
return buff.Pop();
}
결과.
'Leetcode > Top Interview 150' 카테고리의 다른 글
[LinkedList][Medium] 92. Reverse Linked List II (0) | 2024.05.26 |
---|---|
[LinkedList][Medium] 138. Copy List With Random Pointer (0) | 2024.05.26 |
[Stack][Medium] 71. Simplify Path (0) | 2024.05.10 |
[Intervals][Easy] 228. Summary Ranges (0) | 2024.05.08 |
[Hashmap][Easy] 219. Contains Duplicate II (0) | 2024.05.07 |