โ๏ธ ์์
์คํ(Stack), ํ(Queue)์ ๋ํด ์์ ๋ณด์๋ค.
์คํ๊ณผ ํ๋ ์
์ถ๋ ฅ ๋ฐฉ์์ด ๋ค๋ฅธ ์ ์ ์ฐธ๊ณ ํด ๊ฐ๊ฐ์ ๊ตฌ์กฐ์ ํน์ง์ ์์๋ณด์๋ค.
๐ ๋ฐฐ์ด ๊ฒ
โ๏ธ ์๋ฃ๊ตฌ์กฐ
- ์ฌ๋ฌ ๋ฐ์ดํฐ์ ๋ฌถ์์ ์ ์ฅํ๊ณ , ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์ ์ ํ ๊ฒ
๋ฐ์ดํฐ
- ๋ฌธ์, ์ซ์, ์๋ฆฌ, ๊ทธ๋ฆผ, ๋ช
์ ๋ฑ ์ค์ํ์ ๊ตฌ์ฑํ๊ณ ์๋ ๋ชจ๋ ๊ฐ
- ๋ฐ์ดํฐ๋ ๋ถ์ํ๊ณ ์ ๋ฆฌํด ํ์ฉํด์ผ๋ง ์๋ฏธ๋ฅผ ๊ฐ์ง ์ ์๋ค.
ํ์์ ๋ฐ๋ผ ๋ฐ์ดํฐ์ ํน์ง์ ์ ํ์
(๋ถ์)ํด ์ ๋ฆฌํ๊ณ , ํ์ฉ ๋ฐ์ดํฐ๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํด ์ ์ฅํด ๋๋๊ฒ ๋ฐ์ดํฐ๋ฅผ ํ์ฉํ๋๋ฐ ์์ด ํจ์ฌ ์ ๋ฆฌํ๋ค.

์์ฃผ ๋ฑ์ฅํ๋ 4๊ฐ์ง ์๋ฃ๊ตฌ์กฐ
Stack, Queue, Tree, Graph
์๋ฃ๊ตฌ์กฐ ํน์ง
๋ง์ ์๋ฃ๊ตฌ์กฐ๋ฅผ ์์๋๋ฉด ์ด๋ ํ ์ํฉ์ด ๋ฅ์ณค์ ๋ ์ ํฉํ ์๋ฃ๊ตฌ์กฐ๋ฅผ ๋น ๋ฅด๊ณ ์ ํํ๊ฒ ์ ์ฉํด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
โ๏ธ Stack
- ์๋ค, ์์ด๋ค, ํฌ๊ฐ์ง๋ค์ ๊ฐ์ ๋ป
- ๋ฐ์ดํฐ(data)๋ฅผ ์์๋๋ก ์๋ ์๋ฃ๊ตฌ์กฐ

๊ตฌ์กฐ
- ์ํต์ ์๋ฃ๊ตฌ์กฐ Stack, ๊ตฌ์ฌ์ ๋ฐ์ดํฐ(data)๋ก ๋น์
(ํ๋ง๊ธ์ค ๊ณผ์์ ๋น์ ํ ์ ์๋ค. ๊ณผ์ ์ผ์ด์ค = Stack, ๊ณผ์ = data
)
- ์
๋ ฅ๊ณผ ์ถ๋ ฅ์ด ํ๋์ ๋ฐฉํฅ, ์คํ
์ ์ต์๋จ์์๋ง ์ด๋ฃจ์ด์ง๋ ์ ํ์ ์ ๊ทผ์ ์๋ค.
- LIFO(Last In First Out) ํน์, FILO(First In Last Out)์ด๋ผ ๋ถ๋ฅด๊ธฐ๋ ํ๋ค.
- Stack ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์
push
, ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๊ฒ์ pop
์ด๋ผ ํ๋ค.
ํน์ง
1. LIFO(Last In First Out) - ํ์
์ ์ถ
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ ์ ์ผ ๋์ค์ ๋์ค๋ ํ์
์ ์ถ ๊ตฌ์กฐ(์์ง ํํ)
- ์คํ ๊ตฌ์กฐ ๋ด์์ ํน์ ๋ฐ์ดํฐ๋ฅผ ์กฐํ ํ ์ ์๋ค.
- ์คํ ์ต์๋จ์์๋ง ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊บผ๋ผ ์ ์๋ ํน์ง
- ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ ๊ฒ์ํ ๋ ํญ์ ์คํ์ ์ต์๋จ์์๋ง ํ์๊ฐ ์ด๋ฃจ์ด์ง๋ฉฐ ์ด์ ๋ฐ๋ผ ์ ์ฅํ๊ณ ๊ฒ์ํ๋ ํ๋ก์ธ์ค๊ฐ ๋งค์ฐ ๋น ๋ฅด๋ค.
2. ํ๋์ ์
์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ์ง๊ณ ์๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฃ๊ณ ๋บ ์ ์๋ ๊ณณ์ด ์คํ์ ๊ฐ์ฅ ์ต์๋จ ํ๊ตฐ๋ฐ
3. ๋ฐ์ดํฐ๋ ํ๋์ฉ ๋ฃ๊ณ ๋บ ์ ์๋ค.
- ์คํ์ ํ ๊ฐ์ฉ ์ฌ๋ฌ ๋ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ์คํ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ๊ฐ ์์ฌ ์๋๋ผ๋, ๋ฐ์ดํฐ๋ฅผ ๋บ ๋๋ ์คํ์ ๊ฐ์ฅ ์ต์๋จ์์ ํ ๋ฒ์ ํ๊ฐ์ ๋ฐ์ดํฐ๋ง ๋บ ์ ์๋ค.
์ค์ฌ์ฉ ์์
- ๋ํ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํ ํ ๋ ์ฌ์ฉ๋๋ค.
โ๏ธ Queue
- ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๋ค, ๋๊ธฐ ํ๋ ฌ ๋ผ๋ ๋ป

๊ตฌ์กฐ
- ํจ๊ฒ์ดํธ (Queue ์๋ฃ๊ตฌ์กฐ), ์๋์ฐจ(data)๋ก ๋น์
(ํด์ง์ฌ, ํฐ๋ฏธ๋ ๋ฑ์ผ๋ก ๋น์ ํ ์ ๋ ์์ ๊ฑฐ ๊ฐ๋ค.)
- Stack๊ณผ ๋ฐ๋ ๋๋ ๊ฐ๋
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ FIFO(First In First Out) ํน์ LILO(Last In Last Out) ํน์ง์ ๊ฐ์ง๊ณ ์๋ค.
- ์
๋ ฅ์ ๋ฐฉํฅ๊ณผ ์ถ๋ ฅ์ ๋ฐฉํฅ์ด ๊ฐ๊ฐ ๊ณ ์ ๋์ด ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ๊ฒฝ์ฐ ํ์ ๋์์(tail), ๋ฐ์ดํฐ๋ฅผ ์ถ๋ ฅํ ๋๋ ํ์ ๋งจ ์์์(head)๋ฅผ ์งํํ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์
enqueue
, ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๊ฒ์ dequeue
๋ผ๊ณ ํ๋ค.
- ๋ฐ์ดํฐ๊ฐ ์
๋ ฅ๋ ์์๋๋ก ์ฒ๋ฆฌํ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค.
ํน์ง
- FIFO(First In First Out) - ์ ์
์ ์ถ ๊ตฌ์กฐ
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ผ ์ฒ์์ ๋์ค๋ ์ ์
์ ์ถ ๊ตฌ์กฐ
- ๋๊ฐ์ ์
์ถ๋ ฅ ๋ฐฉํฅ
- ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ๋ ๊ณณ๊ณผ ์ถ๋ ฅํ๋ ๊ณณ์ด ๊ฐ๊ฐ ์ ํด์ ธ ์์ผ๋ฉฐ ์ด ๋๊ฐ์ ์
์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ์ง๊ณ ์๋ค.
- ์
์ถ๋ ฅ ๋ฐฉํฅ์ด ๊ฐ๋ค๋ฉด Queue๋ผ ๋ณผ ์ ์๋ค.
- ๋ฐ์ดํฐ๋ ํ๋์ฉ ๋ฃ๊ณ ๋บ ์ ์๋ค.
- ํ์ ํ ๊ฐ์ฉ ์ฌ๋ฌ ๋ฒ ๋ฐ์ดํฐ๋ฅผ ๋ฃ์ด ํ ๋ด๋ถ์ ๋ฐ์ดํฐ๊ฐ ์ฌ๋ฌ๊ฐ ์์ฌ ์๋ค๊ณ ํ๋๋ผ๋, ๋ฐ์ดํฐ๋ฅผ ๋บ ๋๋ ํ์ ๋งจ ์์์ ํ ๋ฒ์ ํ๊ฐ์ ๋ฐ์ดํฐ๋ง ๋บ ์ ์๋ค.
์ค์ฌ์ฉ ์์
- ์ปดํจํฐ์์๋ ๊ด๋ฒ์ ํ๊ฒ ์ฌ์ฉ ๋๋ค.
- ํ๋ฆฐํฐ์ ์ฌ๋ฌ ๋ฌธ์๋ฅผ ์์๋๋ก ์ธ์ ๋ฑ
๋ฒํผ(buffer)?
- ์ปดํจํฐ ์ฅ์น๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋, ๊ฐ ์ฅ์น ์ฌ์ด์ ์กด์ฌํ๋ ์๋์ ์ฐจ์ด๋ ์๊ฐ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์์ ๊ธฐ์ต ์ฅ์น์ ์๋ฃ๊ตฌ์กฐ๋ก Queue๋ฅผ ์ฌ์ฉํ๋ค.
โ๏ธ ๋ง์น๋ฉฐ
์คํ(Stack)์ ํ๋ง๊ธ์ค ๊ณผ์, ํ(Queue)๋ ํฐ๋ฏธ๋์ ๋น์ ํ๋ฉด์ ํ์ตํ๋ ๊ฑฐ ๊ฐ๋ค.
์ด๋ก ์ผ๋ก ๋ดค์ ๋ ์ด๋ค ๋ง์ธ์ง ์ดํด๊ฐ ๋์ง๋ง ๋ง์ ์๊ณ ๋ฆฌ์ฆ์ผ๋ก
์ฝ๋๋ฅผ ์์ฑํ๋ ค๊ณ ํ๋ ๋ง๋งํ๋ค..
์๊ณ ๋ฆฌ์ฆ์ ํ๊ธด ํด์ผํ๋๋ฐ ๊ธฐ์ด๊ฐ ๋ถ์กฑํด์ ๊ทธ๋ฐ์ง ์ ์์ฑ๋์ง ์๋๋ค.
์๋ฐ์คํฌ๋ฆฝํธ ๊ธฐ์ด๋ฅผ ๋ณต์ตํ๋ฉด์ ์๊ณ ๋ฆฌ์ฆ ๊ธฐ์ด ๋ฌธ์ ๋ถํฐ ์ฐจ๊ทผ ์ฐจ๊ทผ ํ์ด๋ด์ผ๊ฒ ๋ค.