알고리즘 풀땐 switch보단 if를 선호한다고 들었는데 사칙연산으로 인해 어쩔 수 없이 사용함.
int evalRPN(vector<string>& tokens)
{
stack<int> s;
for (const auto& ch : tokens)
{
int ans = 0;
// 연산
if (!isdigit(ch[0]) &&
ch.size() == 1)
{
int n2 = s.top(); s.pop();
int n1 = s.top(); s.pop();
switch (ch[0])
{
case '+':
ans += n1 + n2;
break;
case '-':
ans += n1 - n2;
break;
case '*':
ans += n1 * n2;
break;
case '/':
ans += n1 / n2;
break;
}
s.push(ans);
}
// 형변환
else
s.push(stoi(ch));
}
return s.top();
}
'코딩테스트 > LeetCode' 카테고리의 다른 글
[LeetCode] Valid Palindrome II (0) | 2023.12.11 |
---|---|
[LeetCode] Excel Sheet Column Number (0) | 2023.12.11 |
[LeetCode] Rotate Array (0) | 2023.12.08 |
[LeetCode] Merge Sorted Array (0) | 2023.12.08 |
[LeetCode] Length of Last Word (0) | 2023.12.06 |