Leetcode/NeetCode

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

자전거통학 2024. 7. 11. 21:11

https://leetcode.com/problems/evaluate-reverse-polish-notation/description/

 

주어진 string 배열은 아래의 연산을 의미한다.

결과를 구하라.

 

전형적인 stack 구조의 문제. 

해결의 키는 중간 값의 결과를 항상 다시 그 stack에 넣어야 함에 있다.

 

코드 

더보기
int evalRPN(vector<string>& tokens) 
{
    stack<int> sBuff;
    for (int q = 0; q < tokens.size(); ++q)
    {
        string cur = tokens[q];
        if (cur == "+")
        {
            int v2 = sBuff.top();   sBuff.pop();
            int v1 = sBuff.top();   sBuff.pop();
            sBuff.push(v1 + v2);
        }
        else if (cur == "-")
        {
            int v2 = sBuff.top();   sBuff.pop();
            int v1 = sBuff.top();   sBuff.pop();
            sBuff.push(v1 - v2);
        }
        else if (cur == "*")
        {
            int v2 = sBuff.top();   sBuff.pop();
            int v1 = sBuff.top();   sBuff.pop();
            sBuff.push(v1 * v2);
        }
        else if (cur == "/")
        {
            int v2 = sBuff.top();   sBuff.pop();
            int v1 = sBuff.top();   sBuff.pop();
            sBuff.push(v1 / v2);
        }
        else
            sBuff.push(atoi(cur.c_str()));
    }
    return sBuff.top();
}

 

 

 

결과