Skip to content

Commit 8717e1a

Browse files
committed
스택 공부한 내용 정리
1 parent 12b9cc6 commit 8717e1a

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

jiyeeeah/[week2]Stack/스택.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
## 스택의 ADT
2+
3+
> ADT는 우리말로 추상 자료형 (Abstract Data Type)
4+
>
5+
> 추상 자료형 : 인터페이스만 있고 실제로 구현은 되지 않은 자료형 (일종의 자료형의 설계도)
6+
7+
| 연산 | `boolean isFull()` | 스택에 들어 있는 테이터 개수가 maxsize인지 확인해 boolean 값을 반환 |
8+
| ---- | -------------------------- | ------------------------------------------------------------------- |
9+
| | `boolean isEmpty()` | 스택에 들어 있는 테이터가 하나도 없는지 확인해 boolean 값을 반환 |
10+
| | `void push(ItemType item)` | 스택에 데이터를 푸시 |
11+
| | `ItemType pop()` | 스택에서 최근에 푸시한 테이터를 팝하고, 그 데이터를 반환 |
12+
| 상태 | `Int top` | 스택에서 최근에 푸시한 데이터의 위치를 기록 |
13+
| | `ItemType data[maxsize]` | 스택의 데이터를 관리하는 배열. 최대 maxsize개의 데이터를 관리 |
14+
15+
- `data`배열의 최대 크기는 `maxsize` ⇒ 인덱스의 범위는 `0`부터 `maxsize-1`
16+
- 아무 데이터도 없을 때 `top``-1`
17+
- `top``0`이면 데이터가 `1`개 있다는 것
18+
19+
## 스택의 세부 동작
20+
21+
- `push(3)`
22+
1. `isFull()`을 우선 수행 ⇒ `data` 배열에 데이터가 가득 찼는지 확인
23+
2. 그렇지 않다면 `top`을 1만큼 증가시킨 후 (`top = -1``top = 0`)
24+
3. `top`이 가리키는 위치 `data[0]`에 3을 추가
25+
- `pop()`
26+
1. `isEmpty()`를 우선 수행 ⇒ `data` 배열에 데이터가 없는건 아닌지 확인
27+
2. 데이터가 있다면 `top`을 1만큼 감소시키고
28+
3. 데이터 3을 반환
29+
30+
## 스택 구현하기
31+
32+
자바스크립트의 내장 메서드 사용
33+
34+
```tsx
35+
const stack = []; // 스택 초기화
36+
37+
// 스택에 데이터 추가
38+
stack.push(1);
39+
stack.push(2);
40+
stack.push(3);
41+
42+
//스택에서 데이터 꺼냄
43+
const topElement = stack.pop(); // 3
44+
const nextElement = stack.pop(); // 2
45+
46+
const stackSize = stack.length;
47+
```
48+
49+
> 스택을 몰라서 풀지 못하는 것이 아니라 ‘이 문제는 스택을 활용해야 풀 수 있다’라는 생각 자체를 못해서 풀지 못하는 경우가 대부분입니다. **따라서 스택 관련 문제를 많이 풀어보며 ‘이 문제는 스택을 사용하는 게 좋겠다’라는 감을 익히기를 권합니다.**

0 commit comments

Comments
 (0)