숫자들과 사칙 연산 기호가 담긴 문자열 벡터를 받는다.
이 때 데이터들은 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;
}
}
};