File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed
Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change 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+ > 스택을 몰라서 풀지 못하는 것이 아니라 ‘이 문제는 스택을 활용해야 풀 수 있다’라는 생각 자체를 못해서 풀지 못하는 경우가 대부분입니다. ** 따라서 스택 관련 문제를 많이 풀어보며 ‘이 문제는 스택을 사용하는 게 좋겠다’라는 감을 익히기를 권합니다.**
You can’t perform that action at this time.
0 commit comments