레이저와 막대기를 어떻게 구분할까?
스택을 써야한다는 직감이 들었지만.. 어떻게해야 정답을 구할 수 있을지는 갈피를 잡지 못했다.
결과적으로는,
#include <iostream>
#include <stack>
using namespace std;
int main() {
ios::sync_with_stdio(0);
cin.tie(0);
string str;
stack<char> s;
int ans = 0;
cin >> str;
for (int i = 0; i < str.length(); i++) {
if (str[i] == '(') {
s.push(str[i]);
}
else {
char before = str[i-1];
s.pop();
if (before == '(') {
ans += s.size();
}
else {
ans += 1;
}
}
}
cout << ans;
return 0;
}