알고리즘

올바른 괄호(스택) - 자바스크립트

살다보니개발자 2022. 11. 27. 17:45

괄호가 입력될때, 올바른 괄호이면 'YES' , 올바르지 않으면 'NO' 를 출력합니다.

(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

 

 

입력예제 1

(()(()))(()

 

 

출력예제 1

NO

 

 

자바스크립트 풀이

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

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

  return answer;
}

let a = "(()(()))(()";

console.log(solution(a));

 

스택 배열을 만든뒤 , s라는 매개변수 문자열 요소가 "(" 일시 stack 배열에 푸시,

"(" 가 아닌 ")" 일시 스택 배열을 pop으로 가장 나중에 들어간 stack 배열 요소를 빼내준다. ( 후입선출 )

단, stack 배열의 길이가 0이라면 "NO" 를 리턴한다.

 

해당 for문을 실행하고, stack 배열에 "("가 남아있다면 그또한 "NO"를 리턴한다.

 

'알고리즘' 카테고리의 다른 글

크레인 인형뽑기(카카오 기출)  (2) 2022.12.02
괄호문자제거(스택)  (0) 2022.12.01
아나그램(자바스크립트)  (0) 2022.10.11
학급 회장(해쉬)  (0) 2022.09.18
완전탐색(Brute Force) 멘토링  (0) 2022.09.06