let input = fs.readFileSync(filePath).toString().trim().split("");
let stack = [];
let result = 0;
for (let i = 0; i < input.length; i++) {
if (input[i] === ")") {
if (input[i - 1] === "(") {
stack.pop();
result += stack.length;
} else {
result += 1;
stack.pop();
}
} else {
stack.push(input[i]);
}
}
console.log(result);
풀이
1. 배열을 순환하며 요소를 뽑는다.
2. ')'가 나왔을때 직전이 '('라면 stack에서 맨 마지막 요소를 제거하고 쌓인 스택의 갯수를 결과에 더해준다.
3.직전이 '('가 아니라면 stack 맨 마지막 요소 제거 후 결과에 1을 더해준다.
4. '('가 나왔을떄는 stack에 push만 해준다.