hwooo
LeetCode (C/C++) 150. Evaluate Reverse Polish Notation 본문
https://leetcode.com/problems/evaluate-reverse-polish-notation/description/
풀이
연산자를 가장 마지막에 표기하는 후위 표기법을 푸는 문제와 동일하다.
숫자가 나오면 해당 값을 스택에 넣고, 연산자가 나오면 저장된 값 중 가장 최근 값 2개를 꺼내 계산 후 다시 삽입하는 방식으로 풀었다.
코드
class Solution {
public:
int evalRPN(vector<string>& tokens) {
stack <int> nums;
for (int i = 0; i < tokens.size(); i++) {
string token = tokens[i];
// 연산자라면 제일 최근에 저장된 값 2개를 꺼내 계산 후 다시 넣음
if (token == "+" || token == "-" || token == "*" || token == "/") {
int num1, num2;
num2 = nums.top();
nums.pop();
num1 = nums.top();
nums.pop();
if (tokens[i] == "+")
nums.push(num1 + num2);
else if (tokens[i] == "-")
nums.push(num1 - num2);
else if (tokens[i] == "*")
nums.push(num1 * num2);
else if (tokens[i] == "/")
nums.push(num1 / num2);
}
// 숫자라면 스택에 값 넣기
else
nums.push(stoi(tokens[i]));
}
return nums.top();
}
};
'Study > Algorithm' 카테고리의 다른 글
프로그래머스 (C/C++) 131704 : 택배상자 (0) | 2024.05.10 |
---|---|
LeetCode (C/C++) 207. Course Schedule (0) | 2024.05.10 |
LeetCode (C/C++) 413. Arithmetic Slices (0) | 2024.05.07 |
LeetCode (C/C++) 529. Minesweeper (0) | 2024.05.05 |
LeetCode (C/C++) 322. Coin Change (0) | 2024.05.02 |