stack 개념을 차용은 하는데 마지막 합치는 부분에서 - 부분만 처리를 따로 로직을 짜야하는 부분에서 걸렸다.
#include <iostream>
#include <string>
#include <vector>
int main() {
std::string calc;
std::cin >> calc;
std::vector<int> v;
std::vector<int> op;
int _s = 0;
for (int i = 0; i < calc.size(); i++) {
switch (calc[i]) {
case '+':
if (!op.empty() && !op.back()) {
int _temp = _s + v.back();
v.pop_back();
v.push_back(_temp);
op.pop_back();
} else {
v.push_back(_s);
}
op.push_back(0);
_s = 0;
break;
case '-':
if (!op.empty() && !op.back()) {
int _temp = _s + v.back(); v.pop_back();
v.push_back(_temp);
op.pop_back();
} else {
v.push_back(_s);
}
op.push_back(1);
_s = 0;
break;
default:
_s*=10;
_s += calc[i]-'0';
break;
}
}
v.push_back(_s);
int sum = 0;
while (!op.empty()) {
if (!op.back()) {
int _y = v.back();
v.pop_back();
int _x = v.back();
v.pop_back();
v.push_back(_x+_y);
} else {
sum -= v.back();
v.pop_back();
}
op.pop_back();
}
sum += v.back();
std::cout << sum;
return 0;
}'코딩 > cpp' 카테고리의 다른 글
| [백준] 2630번 (0) | 2025.09.28 |
|---|---|
| [백준]1927번 (0) | 2025.09.28 |
| [백준] 1012번 (0) | 2025.09.27 |
| [백준] 17626번 (0) | 2025.09.27 |
| [백준] 11727번 (0) | 2025.09.27 |