goal
Stack을 이해한다.
Stack 및 Queue 다시 정리
1] Stack
1. Stack 이해하기
Stack은 블럭 쌓기 이다.
누군가 Stack에 대해서 묻는다면 한 문장으로 stack은 블럭 쌓기라고 이야기해주고 싶다.
현실 세계의 (예)로 이해하기
현실에서 같은 모양의 4개의 블럭을 하나의 상자에 쌓는다고 가정한다.
쌓기를 시작하면 첫 번째 블럭, 두 번째 블럭, 세 번째 블럭, 네 번째 블럭으로 쌓이게 될 것이다.
반대로 이 블럭들을 빼면 가장 먼저 나오는 순서대로 네 번째 블럭, 세 번째 블럭, 두 번째 블럭, 첫 번째 블럭이 될 것이다.
이 개념 자체가 Stack이다.
Stack의 자료구조 관점
자료구조 관점에서 Stack은 첫 번째 들어간 블럭이 가장 늦게 나온다는 것을 이유로
Last In First Out 자료구조라 하며 이것을 줄여서 LIFO 자료구조라고 명명했다.
그래서 Stack 언제 사용하는데?
웹 브라우저 방문기록 저장실행취소 (ctrl + z라 이해하자)문자열을 역순으로 만들기수식의 괄호 검사
위와 같은 상황들에서 코드를 구현할 때 Stack을 채택한다면 효율적인 코드를 작성할 수 있다.
반대로 Stack에 적합하지 않은 상황도 있기 때문에 상황에 따른 자료구조를 채택해서 사용하는 것이 매우 중요하다.
2. Stack 구현 생각해보기
블럭은 데이터이다.Stack의 데이터가 쌓여 있을 때 가장 윗부분을 Top이라고 한다.Stack의 데이터가 쌓여 있을 때 가장 아랫부분을 Bottom이라고 한다.
Java의 Stack Type의 메소드(동작)을 기준으로 작성한 표이다.
python의 경우 push는 append로 Data가 삽입된다.언어별 메소드 이름에 차이가 있을 뿐 동작을 이해하는 메커니즘은 같다.
- 자바로 Generic을 사용하여 Stack을 직접 구현할 생각인데 쓰면서 생각해보니 쉽지 않을 것 같다...
'Algorithm > 자료구조 이론' 카테고리의 다른 글
자료구조 이론 :) Tree, Binary Tree, Binary Search Tree (0) | 2022.05.29 |
---|---|
자료구조 :) Stack과 Queue를 이해한다. (2) | 2022.05.26 |
자료구조 이론 :) 선택정렬, 버블정렬, 삽입정렬을 알아보자 (0) | 2022.03.27 |
자료구조 이론 :) 배열의 연산과 시간복잡도 이해하기 (0) | 2022.03.27 |