atcoder ABC307 D - Mismatched Parenthesesの勉強

atcoder.jp

・参考:
Submission #42910610 - Tokio Marine & Nichido Fire Insurance Programming Contest 2023(AtCoder Beginner Contest 307)


・考え方:'('が出てきたらある値(仮にaとする)を+1して、')'が出てきたとき0

n=int(input())
s=input()

ans=[]   #最終結果を入れる
a=0  #'('があれば加算

for i in range(n):
  if s[i]=='(':
    ans.append(s[i])
    a+=1
  elif s[i]==')' and 0<a:  
    while ans[-1]!='(':   #ansが'('のところまで消す
      ans.pop()
    ans.pop()   #'('自身も消す
    a-=1
  else:
    ans.append(s[i])
print("".join(ans))