코딩테스트 문제풀이/inflearn

[인프런] Node.js / 섹션6-자료구조(스택) / 1. 올바른 괄호

sangchu 2023. 2. 8. 16:20

괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력

(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

 

풀이

function solution(s) {
  let answer = "YES";
  const stack = [];
  for (let x of s) {
    if (x === "(") stack.push(x);
    else {
      if (stack.length === 0) return "NO";
      stack.pop();
    }
  }
  if (stack.length > 0) return "NO";
  return answer;
}

let a = "(()(()))(()";
console.log(solution(a));

여는 괄호 만나면 stack에 넣고, 닫는 괄호 나오면 pop

아래 상황도 고려해야한다.

  • 여는 괄호 더 많은 상황
  • 닫는 괄호 더 많은 상황

닫는 괄호의 짝꿍은 스택의 제일 상단에 있는 것이다.