| ์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- restTemplate
- ์ ๋ก๋ฒ ์ด์ค
- queue
- ์ฐ๊ด๊ด๊ณ
- ๋ฐฑ์๋์ค์ฟจ
- array
- ์คํ๋ง๋ถํธ
- TestCode
- ์ปดํจํฐ ๊ตฌ์กฐ
- ๋ฐฑ์๋๊ณต๋ถ
- SpringBoot
- ORM
- JPA
- spring
- Java
- error
- ์๋ฒ
- JWT
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์๋
- actuator
- ๊ฐ๋ฐ์
- ๋ฐฑ์ค
- ์๋ฃ๊ตฌ์กฐ
- spring boot
- QueryDSL
- ์ปดํจํฐ ๊ณตํ
- LinkedList
- ํต์ฌ๊ฐ์ด๋
- SpringSecurity
Archives
- Today
- Total
be_better
[์๋ฃ๊ตฌ์กฐ] ์คํ (Stack) ๋ณธ๋ฌธ
๋ชฉ์ฐจ
๐ ์คํ (Stack)
์คํ (Stack)์ ํ์ ์ ์ถ(Last In First Out; LIFO)์ ์์๋ก ๋ฐ์ดํฐ๋ฅผ ์ฝ์ , ์ญ์ ํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- First In Last Out; FILO ๋ก ์ฐ์ด๊ธฐ๋ ํ์ง๋ง LIFO๋ฅผ ๋ ๋ง์ด ์

Overflow & Underflow
์คํ์ ๋ฐ์ดํฐ๊ฐ Full ํ์ ๋ ์ฝ์ ์ ์์ฒญํ๋ฉด Overflow ๋ฐ์
๋ฐ๋๋ก ๋ฐ์ดํฐ๊ฐ Empty ์ผ ๋ ์ญ์ ๋ฅผ ์์ฒญํ๋ฉด Underflow ๋ฐ์
Top
์คํ์ ๊ธฐ๋ค๋ ์์๊ฐ ์ธ์์ ธ์๋ ๊ตฌ์กฐ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ผ ์๋(Bottom)๋ถํฐ ํ๋์ฉ ์๋๋ค.
๋ฐ์ดํฐ์ ์ฝ์ (push) ์ญ์ (pop)์ ์ ์ผ ์๋ฅผ ๋ปํ๋ Top์์๋ง ์ด๋ฃจ์ด์ง๋ค.
๐ฆ ์คํ์ ์ฌ์ฉ์ฌ๋ก
- ํจ์ ์ฝ ์คํ
- ์น ๋ธ๋ผ์ฐ์ ๋ฐฉ๋ฌธ๊ธฐ๋ก(๋ค๋ก๊ฐ๊ธฐ)
- ์คํ ์ทจ์(undo)
- ์ญ์ ๋ฌธ์์ด ๋ง๋ค๊ธฐ
- ํ์ ํ๊ธฐ๋ฒ (postfix) ๊ณ์ฐ
- Backtracking
- ์ธํฐ๋ฝํธ(interrupt) ์ฒ๋ฆฌ
โ๐ป ์คํ ADT (์ถ์ ๋ฐ์ดํฐ ํ์ )
| create() | ์คํ ์์ฑ | |
| push(data) | void ๋ฐ์ดํฐ ์ฝ์ | |
| pop() | top์ ์๋ ๋ฐ์ดํฐ ์ญ์ ํ๋ฉด์ return | |
| peek() | top์ ์๋ ๋ฐ์ดํฐ ์ญ์ ํ์ง ์๊ณ return | |
| contains(data) | ์ํ๋ ๋ฐ์ดํฐ๊ฐ ์๋์ง ํ์ธ true, false return | |
| isEmpty() | ์คํ์ด ๋น์ด์๋์ง ํ์ธ true, false return | |
| isFull() | ์คํ์ด ๊ฐ๋ ์ฐจ์๋์ง ํ์ธ true, false return | |
| size() | ์คํ์ ํฌ๊ธฐ ๋ฐํ int return | |
| clear() | void ์คํ ๋ชจ๋ ์์ ์ญ์ | |
| printStack() | void ์คํ์ ๋ชจ๋ ์์ ์ถ๋ ฅ | |
โ๏ธ ์คํ ๊ธฐ๋ฅ & ๋์์๋ฆฌ
์ฝ์ (push)
- ์คํ์ด ๊ฐ๋ ์ฐจ์๋์ง ํ์ธ isFull()
- ๊ฐ๋ ์ฐจ์๋ค๋ฉด isFull()์ด true๋ฅผ ๋ฐํํ๊ณ Overflow ๋ฐ์
- ๊ฐ๋ ์ฐจ์์ง ์๋ค๋ฉด isFull()์ด false๋ฅผ ๋ฐํํ๊ณ top์ ํ๋ ์ฆ๊ฐ์ํจ๋ค.
- ์ฆ๊ฐํ top์์น์ ๋ฐ์ดํฐ ์ฝ์ (push)
// ์๋ ์ฝ๋
public void push(T item) {
if (isFull()) {
return Overflow;
}
top++;
Stack(top, item);
}
์ญ์ (pop)
- ์คํ์ด ๋น์ด์๋์ง ํ์ธ isEmpty()
- isEmpty()๊ฐ true๋ฅผ ๋ฐํํ๋ฉด ์ญ์ ํ ๋ฐ์ดํฐ๊ฐ ์๊ธฐ ๋๋ฌธ์ Underflow๋ฐ์ ํ ์ข ๋ฃ
- isEmpty()๊ฐ false๋ฅผ ๋ฐํํ๋ฉด top์ ์๋ ๊ฐ temp์ ๋ณด๊ด
- top์ ํ๋ ๊ฐ์์ํจ๋ค.
- temp์ ๋ณด๊ด๋์ด์๋ ๊ฐ return
// ์๋ ์ฝ๋
public T pop() {
if (isEmpty()) {
return Underflow;
}
T temp = Stack(top);
top--;
return temp;
}
โฑ๏ธ ์คํ์ ์๊ฐ๋ณต์ก๋
- ์ฝ์ (Insertion) O(1)
- ์ญ์ (Deletion) O(1)
- ๊ฒ์(Search) O(n)
์ฝ์ (push)์ด๋ ์ญ์ (pop)๋ top์์๋ง ์ด๋ค์ง๊ธฐ ๋๋ฌธ์ ํ๋ฒ๋ง ์ํํ๋ฉด ๋๋ค. O(1)
๊ฒ์์ ์ํ๋ ๊ฐ์ ์ฐพ์ ๋ ๊น์ง ๊ณ์ ์ํํด์ผ๋๊ธฐ ๋๋ฌธ์ ์ต๋ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ๋๋ค.
'์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์๋ฃ๊ตฌ์กฐ] ํธ๋ผ์ด (Trie) (0) | 2023.08.24 |
|---|---|
| [์๋ฃ๊ตฌ์กฐ] ๋ฐฐ์ด (Array) (0) | 2023.08.10 |
| [์๋ฃ๊ตฌ์กฐ] ํ (Queue) (0) | 2023.08.10 |