Leetcode/Top Interview 150

[Stack][Medium] 150. Evaluate Reverse Polish Notation

자전거통학 2024. 5. 11. 06:56

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();
}

 

 

 

결과.