올바른 괄호

프동프동·2022년 8월 1일
0

알고리즘 - Node.js

목록 보기
69/116
post-thumbnail

올바른 괄호


문제

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

입력

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

출력

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

입력 예시 1

(()(()))(()

출력 예시 1

NO


해결방법

  1. 하나하나씩 접근하여 해당 인덱스의 문자가 "("일 경우 stack에 push를 한다.
  2. "("이 아닐 경우 stack이 비어있는지 확인
    2.1 비어 있으면 뺄 요소가 없기 때문에 "NO"를 return
    2.2 stack이 비어있지 않으면 pop
  3. 모든 요소를 pop하였는데도 불구하고 아직 stack에 데이터가 들어있으면 "NO"
function solution(temp) {
  let answer = 'YES';

  let stack = [];
  for (let x of temp) {
    if (x === '(') {
      stack.push(x);
    } else {
      if (stack.legth === 0) {
        return 'NO';
      }
      stack.pop();
    }
  }
  if (stack.length > 0) {
    return 'No';
  }
  return answer;
}

let temp = '(()(()))(()';
console.log(solution(temp));

profile
좋은 개발자가 되고싶은

0개의 댓글