#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
int sum = 0;
string str;
stack<char> s;
cin >> str;
int flag;
for (char c : str) {
if (c == '(') {
s.push('(');
flag = 1;
}
else {
s.pop();
if (flag == 1) { // 레이저
if (s.size()) {
sum += s.size();
}
}
else
sum += 1;
flag = 0;
}
}
cout << sum;
return 0;
}
flag 변수를 이용해 레이저인지 괄호의 끝인지를 구분했다. 레이저로 절단할 때마다 sum에 스택 사이즈만큼을 더해주고, 괄호의 끝을 만나면 1을 더해주었다.