스택에 쌓인 '('의 개수가 2개 이상일 때 "()"가 나오면 pipe 갯수를 더해줬다(왼쪽) 그리고 )가 연속해서 나오면 마지막 남은 1개를 더해줬다.
스택 문제라 그렇게 어렵지는 않았다.
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
string str;
cin >> str;
int result = 0;
stack<char> s;
int pipe = 0;
char last;
for(auto c : str){
if(s.empty()){
s.push(c);
pipe = 0;
last = '(';
}else{
if(c == '('){
if(last == '('){
pipe ++;
}
s.push(c);
last = '(';
}else{
if(pipe>0 && last == '('){
result+=pipe;
}else{
if(pipe>0)result+=1;
pipe --;
}
s.pop();
last = ')';
}
}
}
cout << result;
return 0;
}