<올바른 괄호>
: 괄호가 입력되면 올바른 괄호이면 "YES", 올바르지 않으면 "NO"를 출력한다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.
- 스택(LIFO : Last In First Out)을 이용한다.
- 딱히 다른 것들을 이용하지 않고, 배열을 선언해서 하면 된다.
그리고 push와 pop을 사용해서 하면 된다.- 만약 배열에 아무 원소가 없는 상태에서 pop을 하면 어떻게 되는지 확인해 봤는데, 길이가 0이였다. 유의하기.
! push와 pop
-> push는 배열의 맨 뒤에 원소를 추가할 때 사용하고, pop은 배열의 맨 뒤의 원소를 추출할 때 사용한다. 둘 다 맨 뒤!!! 그리고 기존 배열에 영향을 미친다.
<script> 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)); </script>