https://www.acmicpc.net/problem/10799
구현 문제! 코드 자체는 간단한데 아이디어가 안 떠올라서 블로그 참고했다.
')'가 입력되었을 때, 레이저와 막대인 두 가지 경우가 있다. ➡️ 앞이 '('라면 레이저고, 그게 아니라면 막대의 끝
#include <iostream>
#include <string>
#include <stack>
using namespace std;
int main() {
string str;
stack<char> s;
int ans = 0;
cin >> str;
for (int i = 0; i < str.size(); i++) {
if (str[i] == '(')
s.push(str[i]);
else {
if (str[i - 1] == '(') { //레이저인 경우
s.pop();
ans += s.size();
}
else { //막대의 끝인 경우
s.pop();
ans++;
}
}
}
cout << ans;
return 0;
}