Evaluate Reverse Polish Notation

ㅋㅋ·2022년 12월 17일
0

알고리즘-leetcode

목록 보기
72/135

숫자들과 사칙 연산 기호가 담긴 문자열 벡터를 받는다.

이 때 데이터들은 Reverse Polish Notation 방식으로 담겨져 있는데

이를 계산하여 값을 구하는 문제

class Solution {
public:
    int evalRPN(vector<string>& tokens) {

        stack<long> numbers{};

        for (int i = 0; i < tokens.size(); i++)
        {
            if (isdigit(tokens[i].back()))
            {
                numbers.push(stoi(tokens[i]));
            }
            else
            {
                long two{numbers.top()};
                numbers.pop();
                long one{numbers.top()};
                numbers.pop();
                
                long result = CalculateTokens(one, tokens[i].front(), two);
                numbers.push(result);
            }
        }

        return numbers.top();
    }

    long CalculateTokens(long &one, char &operation, long &two)
    {
        switch (operation)
        {
            case '+':
            {
                return one + two;
            }
            case '-':
            {
                return one - two;
            }
            break;
            case '*':
            {
                return one * two;
            }
            break;
            case '/':
            {
                return one / two;
            }
            break;
            default:
            return 0;
        }
    }
};

0개의 댓글