[프로그래머스 Lv.2] 알고리즘 고득점 Kit 스택/큐 - 올바른 괄호

김민지·2024년 4월 10일
0

✨ 정답 ✨

function solution(s){
    const stack=[];
    for (let i=0;i<s.length;i++){
        if (stack[stack.length-1]==='(' && s[i]===')'){
            stack.pop();
        }else{
            stack.push(s[i]);
        }
    }
    return !stack.length;
}

🧵 참고한 정답지 🧵

💡💡 해설 💡💡

stack에는 아직 짝을 찾지 못한 괄호를 넣어줄 것이다.
s 배열을 for문으로 순회하면서 stack에 마지막으로 들어간 괄호가 (이고 현재 순회중인 s값이 )라면 stack.pop()을 하고 s는 다음 순회값으로 넘어간다.
stack의 마지막 값이 )인 경우를 고려하지 않는 이유는 )는 (와 만나서 짝을 이루고 (를 stack에서 빼내주어야 하는 값이기 때문이다. )이 stack에 들어가면 그 어떠한 경우에도 짝을 이룰 수 없게 된다.
만약 이 조건을 만족하지 못하게 되면 stack에는 s[i]값이 들어가게 된다.
for문을 통한 순회가 완전히 끝났음에도 stack이 비어있지 않다면 괄호 짝이 맞지 않다는 것을 의미하므로 !stack.length를 리턴하여 정답을 맞출 수 있다.

profile
이건 대체 어떻게 만든 거지?

0개의 댓글

관련 채용 정보