[스택] 올바른 괄호

HYl·2022년 4월 19일

Stack ?

스택은 "쌓다" 라는 의미로, 데이터를 차곡차곡 쌓아 올린 형태의 자료구조이다. 데이터가 순서대로 쌓이며 가장 마지막에 삽입된 자료가 가장 먼저 삭제되는 구조를 가진다.

  • LIFO (Last In First Out) : 마지막에 들어간 것이 첫 번째로 나온다.
  • push, pop 을 사용한다.

문제 설명

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

입력 설명

첫 번째 줄에 괄호 문자열이 입력됩니다. 문자열의 최대 길이는 30이다.

  • (()(()))(()

출력 설명

첫 번째 줄에 YES, NO를 출력한다.

  • NO

나의 풀이 방법

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

  s.split('').forEach((v) => {
    if (v === '(') {
      answer.push('(');
    } else {
      answer.pop();
    }
  })

  return answer.length ? 'No' : 'Yes';
}

console.log(solution('(()(()))'));
  • ( 일 때, 배열 안에 push
  • ) 일 때, 배열 안의 값을 pop 한다.
  • 마지막에 배열 안에 남아있는 게 있으면 괄호가 맞지 않는다는 의미이므로, No를 출력하고 그렇지 않으면 Yes를 출력한다.
profile
꾸준히 새로운 것을 알아가는 것을 좋아합니다.

0개의 댓글