올바른 괄호 : Stack

frenchkebab·2021년 8월 24일
0
post-thumbnail



내 풀이

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

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

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

굳이 다 돌릴필요 없이 중간에 stack이 비었을 때 ')'가 들어오면 바로 false return 해버리면됨


내 풀이 수정

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

  for (let x of s) {
    if (x === '(') stack.push(x);
    else {
      // 비어있는데 ')' 들어오는 경우
      if (!stack.length) return 'NO';
      stack.pop();
    }
  }
  // 
  if (stack.length) answer = 'NO';
  return answer;
}

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

Solution 풀이

function solution(s) {
  let answer = 'YES';
  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));
profile
Blockchain Dev Journey

0개의 댓글