[알고리즘]section 6-1_올바른 괄호

Yul·2022년 5월 10일
0

Algorithm

목록 보기
1/9

문제

올바른 괄호

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

  • 입력예제
    (()(()))(()

  • 출력예제
    NO

문제풀이

  • 스택과 큐에 대한 이해
    - JS에서 스택은 배열로 구현한다.
  1. 여는 괄호'('일 경우 stack에 push()
  2. 닫는 괄호')'를 만나면 stack에서 pop()
  3. for문 진행 중 스택이 비었다면 "NO"를 반환
  4. for문이 끝난 후 스택에 요소가 남아있다면 "NO"를 반환, 스택이 비어있다면 "YES" 반환.

코드

function solution(s) {
  let answer = "YES"
  let stack = [];

  for(let x of s) {
    if(x === '(') {
      stack.push(x)
    } else {
      if(stack.length === 0) return "NO"
      stack.pop()
    }
  }
  if(stack.length > 0) answer = "NO"
  return answer;
}

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

노트

스택문제의 기초중에 기초라 비교적 쉬운 문제였다.

출처: https://inf.run/CPjy

profile
자바스크립트 도장깨기👊

0개의 댓글