알고리즘
올바른 괄호(스택) - 자바스크립트
살다보니개발자
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"를 리턴한다.