SEB/TIL
023 | Data Structure - Stack & Queue
kexon
2022. 7. 25. 23:16
๐ Data Structure
๐ค ์๋ฃ๊ตฌ์กฐ
๋ฐ์ดํฐ๋?
- ๋ฐ์ดํฐ: ๋ฌธ์, ์ซ์, ์๋ฆฌ, ๊ทธ๋ฆผ, ์์ ๋ฑ ์ค์ํ์ ๊ตฌ์ฑํ๊ณ ์๋ ๋ชจ๋ ๊ฐ
- ๋ฐ์ดํฐ๊ฐ ์๋ฏธ์์ด์ง๋ ค๋ฉด: ๋ถ์ → ์ ๋ฆฌ → ํ์ฉ
- ๋ฐ์ดํฐ์ ์ฌ์ฉ: ํ์ ๋ชฉ์ ์ ๋ฐ๋ผ ํํ ๊ตฌ๋ถ → ๋ถ๋ฅ
์๋ฃ๊ตฌ์กฐ๋?
- ์๋ฃ์ ํจ์จ์ ์ธ ์ ์ฅ๊ณผ ์ฒ๋ฆฌ๋ฅผ ์ํด ์๋ฃ์ ๋ชฉ์ ์ ๋ฐ๋ผ ๋ถ๋ฅํ์ฌ ๊ตฌ์กฐํํ ๊ฒ
- ์๋ฃ๊ตฌ์กฐ์ ์ข ๋ฅ์ ๊ตฌ๋ถ
๐ Stack
๐ค Stack ์ ์ & ๊ตฌ์กฐ
- Stack: ์๋ค, ์์ด๋ค
- ๋ฐ์ดํฐ๋ฅผ ์์๋๋ก ์๋ ์๋ฃ๊ตฌ์กฐ
- stack์ ๋ฐ์ดํฐ
- ๋ฃ๊ธฐ: push()
- ๊บผ๋ด๊ธฐ: pop()
๐ค Stack ํน์ง
LIFO(Last-In First-Out) - ํ์ ์ ์ถ๊ตฌ์กฐ
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๋ ์ ์ผ ๋์ค์ ๋์ด
- ๊ฐ์ฅ ๋จผ์ ๋ค์ด๊ฐ ํ๋ง๊ธ์ค๋ ์์๊บผ๊ฐ ๋ค ๋จนํ๊ธฐ ์ ๊น์ง ๋์ฌ ์ ์์
public class Stack {
// Integerํ Stack ์ ์ธ
Stack<Integer> stack = new Stack();
// ์ฐจ๋ก๋๋ก ์คํ์ ๋ฃ๊ธฐ
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
/* 1๋ฒ์ด ์ ์ผ ๋จผ์ ๋ค์ด๊ฐ๊ณ 4๋ฒ์ด ๋ง์ง๋ง์ผ๋ก ๋ค์ด๊ฐ
--------------------
1 <- 2 <- 3 <- 4
--------------------
*/
// ์คํ์ด ๋น ๋๊น์ง ๋ฐ์ดํฐ ๊บผ๋ด๊ธฐ
stack.pop();
stack.pop();
stack.pop();
stack.pop();
/* ์ ์ผ ๋ง์ง๋ง์ ์๋ 4๋ถํฐ 3, 2, 1 ์ฐจ๋ก๋ก ๋์ด
--------------------
--------------------
*/
}
๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ฃ๊ณ ๋บ ์ ์์
- ์๋ฌด๋ฆฌ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ๋ง ๋ฃ๊ณ , ๋บ ์ ์์
- ํ๊บผ๋ฒ์ ์ฌ๋ฌ๊ฐ ๋ฃ๊ฑฐ๋ ๋นผ๊ธฐ ์๋จ
ํ๋์ ์ ์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ์ง๊ณ ์์
- ์ ์ถ๋ ฅ์ ๋ฐฉํฅ์ด ๋จ๋ฐฉํฅ ⇒ ์ ํ์ ์ ๊ทผ
- ์ ์ถ๋ ฅ์ ๋ฐฉํฅ์ด ์ฌ๋ฌ๊ฐ์ด๋ฉด stack์ด ์๋
๐ค Stack ์ฌ์ฉ ์์
- ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก๊ฐ๊ธฐ(←), ์์ผ๋ก๊ฐ๊ธฐ(→)
- ์๋ก์ด ํ์ด์ง ์ ์ ์, ํ์ฌ ํ์ด์ง๋ฅผ ์ด์ ์คํ์ ๋ณด๊ด
- ๋ค๋ก๊ฐ๊ธฐ ๋ฒํผ์ผ๋ก ์ด์ ํ์ด์ง๋ก ๊ฐ ๋๋
- ํ์ฌ ํ์ด์ง๋ฅผ ๋ค์์คํ์ ๋ณด๊ดํ๊ณ
- ๊ฐ์ฅ ๋์ค์ ๋ณด๊ด๋ ํ์ด์ง๋ฅผ ์ด์ ์คํ์์ ํ์ฌํ์ด์ง๋ก ๊ฐ์ ธ์ด
- ์์ผ๋ก๊ฐ๊ธฐ ๋ฒํผ์ผ๋ก ๋ค์ํ์ด์ง๋ก ๊ฐ ๋๋
- ๋ค์์คํ์ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ณด๊ด๋ ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ด
- ํ์ฌ ํ์ด์ง๋ฅผ ์ด์ ์คํ์ ๋ณด๊ด
๐ Queue
๐ค Queue ์ ์ & ๊ตฌ์กฐ
- Queue: ์ค์ ์์ ๊ธฐ๋ค๋ฆฌ๋ค, ๋๊ธฐํ๋ ฌ
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ๋จผ์ ๋์ค๋ ์๋ฃ๊ตฌ์กฐ
- Queue์ ๋ฐ์ดํฐ
- ๋ฃ๊ธฐ: enqueue
- ๊บผ๋ด๊ธฐ: dequeue
๐ค Queue ํน์ง
FIFO(First-In First-Out) - ์ ์ ์ ์ถ๊ตฌ์กฐ (= LILO(Last-In Last-Out)
- ๋จผ์ ๋ค์ด๊ฐ ๋ฐ์ดํฐ๊ฐ ์ ์ผ ์ฒ์์ ๋์ด
๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ ๋ฃ๊ณ ๋บ ์ ์์
- ์๋ฌด๋ฆฌ ๋ง์ ๋ฐ์ดํฐ๊ฐ ์์ด๋ ๋ฐ์ดํฐ๋ฅผ ํ๋์ฉ๋ง ๋ฃ๊ณ , ๋บ ์ ์์
- ํ๊บผ๋ฒ์ ์ฌ๋ฌ๊ฐ ๋ฃ๊ฑฐ๋ ๋นผ๊ธฐ ์๋จ
ํ๋์ ์ ์ถ๋ ฅ ๋ฐฉํฅ์ ๊ฐ์ง๊ณ ์์
- ์ ์ถ๋ ฅ์ ๋ฐฉํฅ์ด ๋ค๋ฆ
- ์ ์ถ๋ ฅ์ ๋ฐฉํฅ์ด ๊ฐ์ผ๋ฉด queue๊ฐ ์๋
๐ค Queue ์ฌ์ฉ ์์
- ํ๋ฆฐํฐ
- ๋ฌธ์ ์์ฑ ํ ์ถ๋ ฅ์ ๋๋ฅด๋ฉด ํด๋น ๋ฌธ์๋ ์ธ์ ์์ Queue์ ๋ค์ด๊ฐ
- ํ๋ฆฐํฐ๋ ์ธ์ ์์ Queue์ ๋ค์ด์จ ๋ฌธ์๋ฅผ ์์๋๋ก ์ธ์
๐ค ๋ฒํผ(Buffer)
- ์ปดํจํฐ ์ฅ์น๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ๊ฐ ์ฅ์น ์ฌ์ด์ ์กด์ฌํ๋ ์๋๋ ์๊ฐ ์ฐจ์ด๋ฅผ ๊ทน๋ณตํ๊ธฐ ์ํด ์์๊ธฐ์ต์ฅ์น์ ์๋ฃ๊ตฌ์กฐ๋ก Queue๋ฅผ ์ฌ์ฉํ๋ ๊ฒ
โ Ref.
DS01 - ์๋ฃ๊ตฌ์กฐ์ ์ ์์ ๋ถ๋ฅ
์๋ฃ๊ตฌ์กฐ๋? ์๋ฃ๊ตฌ์กฐ(Data struct)๋ ์ปดํจํฐ์์ ์ฌ์ฉํ ์๋ฃ๋ฅผ ๋ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ ์ ์๋๋ก ์๋ฃ์ ํน์ฑ๊ณผ ์ฌ์ฉ์ฉ๋์ ๋ฐ๋ผ ๋ถ๋ฅํ๊ณ ์ ๋ฆฌํ์ฌ ๊ตฌ์กฐํ ํ ๊ฒ์ ๋ปํ๋ค. ์๋ฃ๊ตฌ
0verc10ck.tistory.com