본문 바로가기
알고리즘 (with. 백준 문제풀이)/Stack

백준 10799번 [쇠막대기]

by 천릉객 2023. 9. 15.
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim();
const inputArr = input.split("");

let stack = [] // 쇠막대기 저장할 stack
let cnt = 0 

const len = inputArr.length;

for(let i=0; i<len; i++){
    if(inputArr[i] == "("){
        // "("가 나오면 쇠막대기 시작 지점이라 판단하고 stack에 넣기
        stack.push(inputArr[i]); 
    }else{
        // ")"가 나오면 쇠막대기 끝 지점이라 판단하고 stack에서 빼기
        stack.pop()
        // 만약 바로 앞이 "(" 라면 레이저라 판단하고 잘린 쇠막대기 갯수 추가하기
        if(inputArr[i-1] == "("){
            cnt += stack.length;
        }else{
            // 바로 앞이 ")"라면 쇠막대기 하나가 끝났으므로 조각 갯수에 추가하기
            cnt += 1;
        }
    }
}

console.log(cnt)