https://www.acmicpc.net/problem/15926
15926번: 현욱은 괄호왕이야!!
첫 번째 입출력에서, 맨 처음 위치부터 4개를 잘라낸 (())가 가장 긴 올바른 괄호 문자열이다. 두 번째 입출력에서, 6번째 위치부터 8개를 잘라낸 ()((()))가 가장 긴 올바른 괄호 문자열이다.
www.acmicpc.net
문제풀이
올바른 괄호의 인덱스를 저장하는 배열의 카운트 값 구하기
코드
#include<bits/stdc++.h>
using namespace std;
int n, ret, cnt, a[200001];
stack<int> stk;
string s;
int main(){
cin >> n >> s;
for(int i=0;i<n;i++){
if(s[i]=='(')stk.push(i);
else if(stk.size()){
a[i]=a[stk.top()]=1;
stk.pop();
}
}
for(int i=0;i<n;i++){
if(a[i]){
cnt++;
ret = max(ret, cnt);
}else cnt = 0;
}
cout << ret<<"\n";
return 0;
}