- 何かと括弧ってスタックって言うデータ構造と相性が良い気がするんですよ。
- なので、括弧の問題を考える時はまずゆっくりスタックの性質を考えながら解いていくと良い気がします。(僕も経験が浅いので大きい事は言えませんが)
- あと、類似した問題を2個程見たことがあるのでやったことが無い人は挑戦してみてね(そんなに複雑じゃないよ)
A - STring
D - Insertion
#include<bits/stdc++.h>
using namespace std;
int n;
string s;
int a[200001];
int ans[200001];
int main(){
cin>>n>>s;
for(int i=0;i<n;i++)a[i]=i+1;
stack<int> st;
for(int i=0;i<n;i++){
if(s[i]==')'){
int temp=st.top();
ans[i]=temp;
ans[temp-1]=i+1;
st.pop();
}else{
st.push(i+1);
}
}
for(int i=0;i<n;i++)cout<<ans[i]<<"\n";
return 0;
}