JavaScript/JS_Algorithm

[인프런 - JS 알고리즘 문제풀이] stack판단

느리지만 꾸준하게 2021. 8. 5. 18:26

Stack이란 무엇이냐

  • data를 일시적으로 저장할려고 사용하는 data structure
  • data 입출력 순서는 후입 선출(Last In First Out LIFO)이다.
  • data를 넣는 작업을 push / 꺼내는 작업을 pop이라 한다.

즉, stack은 배열을 세로로 세워서 생각하면 편리하다.

stack 구조

 

 

 

linked list이고 뒤로 넣고 뺼 수 있는 것이다.(하지만 앞으로는 넣고 빼지 못한다.) JavaScript에서는 array에서 shift unshift없이 push pop만 있다고 생각하면 된다.(push와 pop은 stack에서 나온 것이다.) 다른 한 가지의 메소드는 stackTop으로 스택의 마지막 요소를 알려주는 것이다. 스택의 마지막 요소를 top이라고 부른다.

 

프로그래밍상에서 스택이 자주 등장하는데 stack overflow나 stack underflow 둘 다 메모리보다 데이터를 더 넣었거나 메모리가 비었는데 데이터를 꺼내려고 할 때 발생하는 에러이다.

 

이번 문제에서는 (와 )가 세로로 새워진 배열에 들어갔다고 연상하면서 문제를 풀어보면 (가 들어가고 )가 들어갈때는 (이 나온다고 생각하면서 코드를 작성하자. 아래코드를 보자.

 

<body>
    <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>
</body>

 

 

 

<출처 : 자바스크립트 알고리즘 문제풀이(코딩테스트 대비): 김태원>

https://www.inflearn.com/course/%EC%9E%90%EB%B0%94%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%AC%B8%EC%A0%9C%ED%92%80%EC%9D%B4/dashboard

 

자바스크립트 알고리즘 문제풀이(코딩테스트 대비) - 인프런 | 강의

자바스크립트(JavaScript)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 재미있게 풀 수 있는 기초 단계 문제부터 고급 알고리즘까지 단계별로 차근차근 배우도록 설계된 강좌입니다., 개발

www.inflearn.com

참고: https://medium.com/@sindepal/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-stack-76f955f6c2dc

 

알고리즘 - Stack

Stack 이란 ?

medium.com

https://www.zerocho.com/category/Algorithm/post/5800b79e1dfb250015c38db6

 

(Algorithm) 자료구조(스택, stack)

안녕하세요. 이번 시간에는 스택에 대해 알아보겠습니다! 스택은 실생활에도 많이 사용되는 자료구조 중 하나입니다. 연결 리스트인데 뒤로 넣고 뒤로만 뺄 수 있습니다. 앞으로는 넣지도, 빼지

www.zerocho.com

https://www.tutorialspoint.com/data_structures_algorithms/stack_algorithm.htm

 

Data Structure and Algorithms - Stack - Tutorialspoint

Data Structure and Algorithms - Stack A stack is an Abstract Data Type (ADT), commonly used in most programming languages. It is named stack as it behaves like a real-world stack, for example – a deck of cards or a pile of plates, etc. A real-world stack

www.tutorialspoint.com