쇠막대기

minho·2021년 9월 28일
0

문제


나의 코드

function solution(s){
               let answer = 0;
                    stack = [];
               for(let i = 0; i< s.length; i++){
                   if(s[i] === "(") stack.push(s[i]);
                   else{
                       stack.pop()
                       if(s[i-1] === "(") answer += stack.length;
                       else answer ++;
                   }
               }
               return answer;
            }
            
            let a="(((()(()()))(())()))(()())";
            console.log(solution(a));

원리

  1. s[i] 가 ")" 일때 s[i-1]이 "(" 이면 stack의 갯수만큼 answer에 더해주고, ")"이면 answer에 +1해준다.
    1-1. 이유는 s[i-1]이 "("이면 수직선으로 자르므로 수직선 왼쪽편의 개수를 알 수 있고,
    ")"면 막대가 끝난것이기 때문에 수직선의 오른쪽 갯수를 더해주기 때문이다.
profile
Live the way you think

0개의 댓글