쇠막대기인지 레이저인지를 파악하기 위해 닫힌 괄호를 만나면 그 앞이 열린 괄호인지 확인해야한다 ex : ()
만약 열린 괄호가 아닌 닫힌 괄호라면 막대기의 끝이므로 1을 더해주어야한다.
-> 2개의 레이저로 한 막대를 나누면 3개가 되기 때문
닫힌 괄호를 만났을 때 앞이 열린 괄호라면 레이저이므로 앞에 막대기가 몇 개있었는지 파악후 더해주면된다. 이것은 스택의 size로 파악할 수 있다.
undefined
#include <iostream>
#include <vector>
#include <queue>
#include <stack>
//백준 10799, 쇠막대기
int main(){
std::stack<char> stack;
std::string s;
std::cin >> s;
int num{0};
for(int i{0}; i<s.size(); ++i){
if(s[i] == '(') stack.push('(');
else if(s[i] == ')' && s[i-1] == '('){
stack.pop();
num += stack.size();
}
else{
++num;
stack.pop();
}
}
std::cout << num;
return 0;
}