2022/02/04) 1. 올바른 괄호 [자료구조(스택, 큐)]

굥굥이·2022년 2월 5일
0
post-thumbnail

1. 문제

<올바른 괄호>
: 괄호가 입력되면 올바른 괄호이면 "YES", 올바르지 않으면 "NO"를 출력한다.
(())() 이것은 괄호의 쌍이 올바르게 위치하는 거지만, (()()))은 올바른 괄호가 아니다.

2. 해결 방법

  1. 스택(LIFO : Last In First Out)을 이용한다.
  2. 딱히 다른 것들을 이용하지 않고, 배열을 선언해서 하면 된다.
    그리고 pushpop을 사용해서 하면 된다.
  3. 만약 배열에 아무 원소가 없는 상태에서 pop을 하면 어떻게 되는지 확인해 봤는데, 길이가 0이였다. 유의하기.

! push와 pop
-> push는 배열의 맨 뒤에 원소를 추가할 때 사용하고, pop은 배열의 맨 뒤의 원소를 추출할 때 사용한다. 둘 다 맨 뒤!!! 그리고 기존 배열에 영향을 미친다.

3. 정답

        <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>
profile
아자아자 파이띵굥!

0개의 댓글