Skip to content

Commit 09a19b5

Browse files
committed
[stack] Docs: Stack ReadMe 추가
1 parent 151cdb1 commit 09a19b5

File tree

3 files changed

+23
-0
lines changed

3 files changed

+23
-0
lines changed
File renamed without changes.
+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
## 특징
2+
- 후입선출(LIFO, Last In First Out)
3+
4+
상자안에 책을 쌓는다고 생각을 하면 됩니다. 즉 가장 먼저 넣은 책은 가장 나중에 꺼낼 수 있으며, 가장 최근에 넣은 책을 가장 먼저 뺄수 있습니다.
5+
6+
## 메소드
7+
- pop(): 스택에서 가장 위에 있는 항목을 제거한다.
8+
- push(item): item 하나를 스택의 가장 윗 부분에 추가한다.
9+
- peek(): 스택의 가장 위에 있는 항목을 반환한다.
10+
- isEmpty(): 스택이 비어 있을 때에 true를 반환한다.
11+
12+
## 사용 사례
13+
- 웹 브라우저 방문기록 (뒤로가기)
14+
- 실행 취소 (undo)
15+
- 역순 문자열 만들기
16+
- 수식의 괄호 검사 (연산자 우선순위 표현을 위한 괄호 검사)
17+
Ex) 올바른 괄호 문자열(VPS, Valid Parenthesis String) 판단하기
18+
- 후위 표기법 계산
19+
20+
## 구현
21+
`Array` 기반 스택은 접근 속도가 빠르지만 변경이 용이하지 않습니다. 배열은 생성할 때, 메모리의 연속된 공간에 데이터를 저장합니다. 그렇기 때문에 검색할 때는 데이터를 빠르게 찾을 수 있지만, 변경이 일어났을 때는 새로운 배열을 생성하고, 생성된 배열에 데이터를 복사해야하기 때문에 느려집니다. 복사해야할 데이터가 많지 않다면, 크게 상관 없지만 데이터가 많아질수록 점점 더 느려질 것입니다.
22+
23+
반면에 `Linked List` 기반 스택은 메모리 주소를 통해 노드가 연결되어 있어, 가르키는 메모리 주소만 변경하면 되므로, 등록, 수정과 같은 변경에는 빠르게 반응할 수 있습니다. 하지만, 메모리에 연속된 공간에 존재하지 않기 때문에 검색 데이터를 찾기 위해 노드를 순회해야하므로 검색 속도는 좋지 않습니다.
File renamed without changes.

0 commit comments

Comments
 (0)