ポイント
- vectorで、push_backやpop_backを使って実装できる
- 配列の要素番号が、スタックでいう所の層番号に対応している
例題
ABC307D - Mismatched Parentheses
#include <bits/stdc++.h>
using namespace std;
int main() {
int N; string S;
cin >> N >> S;
vector<string> A;
A.push_back("");
for (char c : S) {
if (c == '(') A.push_back("(");
else if (c == ')') {
if (A.size() == 1) A.back() += c;
else A.pop_back();
}
else A.back() += c;
}
string ans = "";
for (string a : A) ans += a;
cout << ans << endl;
}
#include <bits/stdc++.h>
using namespace std;
#define rep(i, n) for (int i = 0; i < (n); ++i)
int main() {
string S; cin >> S;
const string T = "ABC";
const int M = T.size();
string ans = "";
rep(i, S.size()) {
ans += S[i];
if (ans.size() < M) continue;
string str = ans.substr(ans.size() - M);
if (str == T) rep(j, M) ans.pop_back();
}
cout << ans << endl;
}