Jieunny์ ๋ธ๋ก๊ทธ
S4) Unit 1. [์๋ฃ๊ตฌ์กฐ/ ์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ & Stack & Queue ๋ณธ๋ฌธ
S4) Unit 1. [์๋ฃ๊ตฌ์กฐ/ ์๊ณ ๋ฆฌ์ฆ] ์๋ฃ๊ตฌ์กฐ & Stack & Queue
Jieunny 2023. 3. 14. 12:00๐ฃ ์๋ฃ๊ตฌ์กฐ๋?
๐ญ. ์๋ฃ๊ตฌ์กฐ์ ์ ์
โ๏ธ ์ฌ๋ฌ ๋ฐ์ดํฐ์ ๋ฌถ์์ ์ ์ฅํ๊ณ , ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ํ ๊ฒ
โฐ ๋ฐ์ดํฐ : ๋ฌธ์, ์ซ์, ์๋ฆฌ, ๊ทธ๋ฆผ, ์์ ๋ฑ ์ค์ํ์ ๊ตฌ์ฑํ๊ณ ์๋ ๋ชจ๋ ๊ฐ
โฐ ๋ฐ์ดํฐ๋ ํ์์ ๋ฐ๋ผ ํน์ง์ ์ ํ์
ํ๊ณ , ๋ถ์ํ๊ณ ์ ๋ฆฌํด์ ํ์ฉํด์ผ๋ง ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์๋ค.
โฐ ์ด๋ฅผ ์ํด ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํด์ ์ ์ฅํด๋๋ ๊ฒ ์ ๋ฆฌํ๋ค!
๐ฎ. ์๋ฃ๊ตฌ์กฐ์ ๋ถ๋ฅ
โ๏ธ ์๊ณ ๋ฆฌ์ฆ ํ
์คํธ์ ์์ฃผ ๋ฑ์ฅํ๋ 4๊ฐ์ง ๊ฐ๋
โฐ Stack, Queue, Tree, Graph
๐ฏ. ์๋ฃ๊ตฌ์กฐ์ ํน์ง
โ๏ธ ํน์ ํ ์ํฉ์ ๋์ธ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ์ ํนํ๋์ด ์๋ค.
โฐ ์ด๋ ํ ์ํฉ์ ์ ํฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ์ ์ฉํด์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
๐ฃ Stack ์ด๋?
๐ญ. Stack์ ์ ์
โ๏ธ ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์๋ ์๋ฃ๊ตฌ์กฐ
โฐ ๋๊ทธ๋ ์ํต์ ๊ตฌ์ฌ์ ๋ฃ๊ณ , ๊ฐ์ฅ ๋งจ์์ ์๋ ๊ตฌ์ฌ์ ๋จผ์ ๋นผ๋ ๊ฒ์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๊ตฌ์ฌ์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
๐ฎ. Stack์ ๊ตฌ์กฐ
โ๏ธ LIFO(Last In First Out) ํน์ FILO(First In Last Out)
โฐ ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ์์ชฝ์ด ์๋ ์คํ์ ์ต์๋จ์์๋ง ์ ํ์ ์ผ๋ก ์ด๋ฃจ์ด์ง๋ค.
โฐ ๋งจ ์ฒ์ ๋ฃ์ ๋ฐ์ดํฐ๋ ์ ์ผ ๋ฐ์ ์์นํ๋ฏ๋ก ์ ์ผ ๋์ค์ ๊บผ๋ผ ์ ์๊ณ , ๋งจ ๋ง์ง๋ง์ ๋ฃ์ ๋ฐ์ดํฐ๋ ์ ์ผ ์์ ์์นํ๋ฏ๋ก ์ฒซ๋ฒ์งธ๋ก ๊บผ๋ผ ์ ์๋ค.
โฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ PUSH, ๊บผ๋ด๋ ๊ฒ์ POP ์ด๋ผ๊ณ ํ๋ค.
๐ฏ. Stack์ ํน์ง
1๏ธโฃ LIFO(Last In First Out)
โฐ ํ์
์ ์ถ์ ๊ตฌ์กฐ
โฐ ์คํ ๊ตฌ์กฐ ๋ด์์๋ ํน์ ๋ฐ์ดํฐ๋ฅผ ์กฐํํ ์ ์์ผ๋ฉฐ, ์ต์๋จ์์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊บผ๋ผ ์ ์๋ค -> ๋งค์ฐ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ด ์๋ค.
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
// stack
// ๋จผ์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ๋งจ ๋ง์ง๋ง์ ์์นํ๋ค.
| 4 |
| 3 |
| 2 |
| 1 |
stack.pop();
// stack
// ๋งจ ๋ง์ง๋ง์ ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ์ ์ผ ์ฒ์ ๋น ์ง๋ค.
| 3 |
| 2 |
| 1 |
2๏ธโฃ ํ๋์ ์
์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ์ง๊ณ ์๋ค.
โฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋บ ์ ์๋ ๊ณณ์ด ์คํ์ ์ต์๋จ ํ ๊ณณ์ด๋ค.
โฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ ๋๋ ์ต์๋จ์ผ๋ก ๋ฃ๊ณ , ๋บ ๋๋ ์ต์๋จ์์ ๋บ ์ ์๋ค.
3๏ธโฃ ๋ฐ์ดํฐ๋ ํ๋์ฉ ๋ฃ๊ณ ๋บ ์ ์๋ค.
โฐ ์
์ถ๋ ฅ ๊ณต๊ฐ์ด ํ ๊ตฐ๋ฐ ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ๋ ํ๋์ฉ ๋ค๋ฃฐ ์ ์๋ค.
โฐ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋นผ๊ณ ์ถ์ ๋ pop()์ ์ฌ๋ฌ ๋ฒ ์ํํด์ผํ๋ ๊ฒ์ด๋ค.
๐ฐ. Stack์ ์ค์ฌ์ฉ ์์
โ๏ธ ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ
โฐ ์๋ก์ด ํ์ด์ง์ ์ ์ํ ๋, ํ์ฌ ํ์ด์ง๋ฅผ Prev Stack์ ๋ณด๊ดํ๋ค.
โฐ ๋ค๋ก ๊ฐ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด ํ์ฌ ํ์ด์ง๋ Next Stack์ ๋ฃ๊ณ , Prev Stack์ ์ต์๋จ์ ๋ณด๊ด๋ ํ์ด์ง๋ฅผ ํ์ฌ ํ์ด์ง๋ก ๊ฐ์ ธ์จ๋ค.
โฐ ์์ผ๋ก ๊ฐ๊ธฐ๋ฅผ ๋๋ฅด๋ฉด Next Stage์ ๊ฐ์ฅ ์ต์๋จ์ ๋ณด๊ด๋ ํ์ด์ง๋ฅผ ํ์ฌ ํ์ด์ง๋ก ๊ฐ์ ธ์ค๊ณ , ํ์ฌ ํ์ด์ง์๋ ํ์ด์ง๋ Prev Stack์ ๋ฃ๋๋ค.
๐ฃ Queue ๋?
๐ญ. Queue์ ์ ์
โ๏ธ Stack๊ณผ ๋ฐ๋๋๋ ๊ฐ๋
์ผ๋ก ๋จผ์ ์ง์ด ๋ฃ์ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ ์์ ๊ธฐ์ต ์ฅ์น
๐ฎ. Queue์ ๊ตฌ์กฐ
โ๏ธ FIFO(First In First Out) ํน์ LILO(Last In Last Out)
โฐ ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์จ๋ค.
โฐ ์
๋ ฅ ๋ฐฉํฅ๊ณผ ์ถ๋ ฅ ๋ฐฉํฅ์ด ์ฒ์๊ณผ ๋์ผ๋ก ๊ณ ์ ๋์ด ์์ผ๋ฉฐ, ์
๋ ฅ ์์๋ ํ์ ๋(tail)์์, ๊บผ๋ผ ๋๋ ํ์ ๋งจ ์(head)์์ ์งํ๋๋ค.
โฐ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ enqueue, ๊บผ๋ด๋ ๊ฒ์ dequeue ๋ผ๊ณ ํ๋ค.
๐ฏ. Queue์ ํน์ง
1๏ธโฃ FIFO(Fist In First Out)
โฐ ์ ์
์ ์ถ์ ๊ตฌ์กฐ
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
// Queue
| 1 <- 2 <- 3 <- 4 |
์ถ๋ ฅ(head) ์
๋ ฅ(tail)
queue.dequeue();
// Queue
| 2 <- 3 <- 4 |
์ถ๋ ฅ(head) ์
๋ ฅ(tail)
2๏ธโฃ ๋ ๊ฐ์ ์
์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ๊ณ ์๋ค.
โฐ ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ๋๋ ํ์ ๋งจ ๋(tail)์ผ๋ก๋ง ์
๋ ฅ ๊ฐ๋ฅํ๊ณ , ์ถ๋ ฅํ ๋๋ ํ์ ๋งจ ์(head)์ผ๋ก๋ง ์ถ๋ ฅ์ด ๊ฐ๋ใ
ํ๋ค.
โฐ ์
์ถ๋ ฅ ๋ฐฉํฅ์ด ๊ฐ๋ค๋ฉด Queue ๋ผ๊ณ ๋ณผ ์ ์๋ค!
3๏ธโฃ ๋ฐ์ดํฐ๋ ํ๋์ฉ ๋ฃ๊ณ ๋บ ์ ์๋ค.
โฐ ๊ฐ ์ฒ๋ฆฌ ์๋ง๋ค ํ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ฑฐ๋ ๋บ ์ ์๋ค.
โฐ ์ฌ๋ฌ ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ๋นผ๊ณ ์ถ๋ค๋ฉด ํ์ ๋งจ ์์์ ํ ๋ฒ์ ํ ๊ฐ์ ๋ฐ์ดํฐ๋ง ๋บ ์ ์์ผ๋ฏ๋ก ์ฌ๋ฌ ๋ฒ ์คํํด์ผ ํ๋ค.
๐ฐ. Queue์ ์ค์ฌ์ฉ ์์
โ๏ธ ํ๋ฆฐํฐ์์์ ๋ฌธ์ ์ธ์
โฐ ์ฐ๋ฆฌ๊ฐ ๋ฌธ์๋ฅผ ์์ฑํ๊ณ ์ถ๋ ฅ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ฌธ์๋ ์ธ์ ์์
Queue์ ๋ค์ด๊ฐ๋ค.
โฐ ํ๋ฆฐํฐ๋ ์ธ์ ์์
Queue์ ๋ค์ด์จ ์์๋๋ก ๋ฌธ์๋ฅผ ์ธ์ํ๋ค.
โ ๋ฒํผ(buffer)
โ๏ธ ์ปดํจํฐ ์ฅ์น๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ๊ฐ ์ฅ์น์์ ์กด์ฌํ๋ ์๋๋ ์๊ฐ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ
โฐ ๋ถ๊ท์น์ ์ผ๋ก ๋ฐ์ํ ์ด๋ฒคํธ๋ฅผ ๊ท์น์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฒํผ๋ฅผ ์ฌ์ฉํ๋ค.
โฐ ์ผ๋ฐ์ ์ผ๋ก ํ๋ฆฐํฐ๋ ์๋๊ฐ ๋๋ฆฌ๊ณ , CPU๋ ๊ทธ์ ๋นํด ๋ฐ์ดํฐ ์ฒ๋ฆฌ ์๋๊ฐ ๋น ๋ฅด๋ค.
โฐ CPU๋ ๋น ๋ฅธ ์๋๋ก ์ธ์์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ๋ง๋ ํ, Queue์ ์ ์ฅํ๊ณ ๋ค๋ฅธ ์์
์ ์ํํ๋ค.
โฐ ํ๋ฆฐํฐ๋ Queue์์ ๋ฐ์ดํฐ๋ฅผ ๋ฐ์ ๋ค์ด์จ ์์๋๋ก ์ผ์ ํ ์๋๋ก ์ธ์ํ๋ค.
'CodeStates > learning contents' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
S4) Unit 2. [HTML/CSS] ๋ธ๋ผ์ฐ์ &๋ ๋๋ง (0) | 2023.03.16 |
---|---|
S4) Unit 1. [์๋ฃ๊ตฌ์กฐ/ ์๊ณ ๋ฆฌ์ฆ] Tree & Graph (0) | 2023.03.15 |
Section 3. [๊ธฐ์ ๋ฉด์ ] (0) | 2023.03.13 |
S3) Unit 7. [Backend] Hashing / Token / OAuth (0) | 2023.03.08 |
S3) Unit 7. [Backend] Cookie / Session (0) | 2023.03.07 |