올바른 괄호

bkboy·2022년 5월 19일
0

문제

괄호가 입력되면 올바른 괄호이면 “YES", 올바르지 않으면 ”NO"를 출력합니다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

제한 사항

입출력 예

풀이

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

let a = "(()(()))(()";
console.log(solution(a));
  • 괄호 문제 열에 아홉은 stack과 관련된 문제이다.
  • 여는 괄호를 만나면 stack에 push하고 닫는 괄호를 만나면 pop한다. 이때 stack에 아무것도 들어 있지 않으면 그대로 NO를 리턴한다.
  • 반복문을 빠져나온 후 stack에 아무것도 없으면 알맞게 쌍이 존재한 것이다.
profile
음악하는 개발자

0개의 댓글