알고리즘 (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)