프로그래머스 - 쇠막대기 (javascript)

김태은·2020년 1월 15일
0

문제풀이

목록 보기
3/12
// (을 계속 push 하고 )은 pop을 하는데, 핵심은 )이 pop될 때, 레이저인지 막대기인지 파악하는 것이 중요하다.
// 레이저인 경우에는 스택의 길이(현재까지 쌓인 막대기 길이)를 add 하고, 막대기의 끝인 경우는 1을 add 한다.
function solution(arrangement) {
    let result = 0;
    let stack = [];
    for(let i=0;i<arrangement.length;i++){
        if(arrangement[i] === "("){ // (은 무조건 push
            stack.push("(");
        }
        else{ // )이 나오면 (를 하나 빼줌
            stack.pop();
            if(arrangement[i-1]==="("){ // case1 : 레이저인 경우
                result += stack.length;
            }
            else{ // case2 : 막대기 끝인 경우
                result += 1;
            }
        }
    }
    return result
}
profile
프론트엔드 개발 공부블로그

0개의 댓글