[javascript] 백준 10799번 쇠막대기

bjyyyyy·2022년 12월 17일
0

문제보기

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만 해준다.

0개의 댓글