괄호가 입력될때, 올바른 괄호이면 '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 |