๐ก ํต์ฌ ์ค๋ช
LIFO ๊ตฌ์กฐ. ํจ์ ํธ์ถ, ๊ดํธ ๊ฒ์ฌ์ ํ์ฉ
๐ ๊ฐ๋
์คํ(Stack)์ ํ์ ์ ์ถ(LIFO, Last In First Out) ๋ฐฉ์์ผ๋ก ๋์ํ๋ ์ ํ ์๋ฃ ๊ตฌ์กฐ์ด๋ค.
๋ฐ์ดํฐ๊ฐ ์ฐจ๊ณก์ฐจ๊ณก ์์ ์ฌ๋ผ๊ฐ๋ ํํ์ด๋ฉฐ, ๊ฐ์ฅ ๋ง์ง๋ง์ ์ฝ์ ๋ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ์ญ์ ๋๋ ๊ตฌ์กฐ์ด๋ค.
์ฐ์ฐ
push ์ฐ์ฐ์ ํตํด ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ top ์์น์ ์ฝ์ ํ๊ณ ,
pop ์ฐ์ฐ์ ํตํด top ์์น์ ๋ฐ์ดํฐ๋ฅผ ์ ๊ฑฐํ๋ค.
๋ฐ์ดํฐ๋ top์ ํตํด์๋ง ์ ๊ทผ ๊ฐ๋ฅํ๋ฉฐ, ์ค๊ฐ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ง์ ์์ ํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ค.
โ ์ถ๊ฐ ์ค๋ช
์คํ(Stack) vs ํ(Queue) ๋น๊ต
ํน์ฑ | ์คํ(Stack) | ํ(Queue) |
๊ตฌ์กฐ | ํ์ ์ ์ถ(LIFO) | ์ ์ ์ ์ถ(FIFO) |
์ฝ์ ๋ฐฉ์ | push (top์์ ์ฝ์ ) | enqueue (rear์์ ์ฝ์
) offer (java) |
์ญ์ ๋ฐฉ์ | pop (top์์ ์ญ์ ) | dequeue (front์์ ์ญ์ ) poll (java) |
์ ๊ทผ ๋ฐฉ์ | top์ ํตํด์๋ง ๊ฐ๋ฅ | front์์๋ง ์ญ์ , rear์์ ์ฝ์ |
์ฌ์ฉ ์ฌ๋ก | ์คํ ์ทจ์(undo), ์ญ์ ๋ฌธ์์ด | ์ํ ์ ๋ฌด, ํ๋ก์ธ์ค ๊ด๋ฆฌ |
๐ฏ ๊ด๋ จ ์๊ณ ๋ฆฌ์ฆ
๐ ๊ดํธ ์ ํจ์ฑ ๊ฒ์ฌ (Valid Parentheses)
- ์ค๋ช : (), {}, [] ์ ๊ฐ์ ๊ดํธ์ ์ด๋ฆผ๊ณผ ๋ซํ์ด ์ฌ๋ฐ๋ฅธ์ง ๊ฒ์ฌ
- ์๊ณ ๋ฆฌ์ฆ:
- ์ฌ๋ ๊ดํธ๋ ์คํ์ push
- ๋ซ๋ ๊ดํธ๊ฐ ๋์ค๋ฉด, ์คํ์ top๊ณผ ์ง์ด ๋ง๋์ง ํ์ธํ๊ณ pop
- ๋ชจ๋ ๊ดํธ๋ฅผ ์ฒ๋ฆฌํ ํ ์คํ์ด ๋น์ด ์์ด์ผ ์ฌ๋ฐ๋ฅธ ๊ดํธ
๐ ์์ ๊ณ์ฐ (ํ์ ํ๊ธฐ๋ฒ - Postfix Expression Evaluation)
- ์ค๋ช : ํ์ ํ๊ธฐ๋ฒ์ผ๋ก ์์ฑ๋ ์์์ ๊ณ์ฐ
- ์์: 3 4 + 2 * → ((3+4) * 2)
- ์๊ณ ๋ฆฌ์ฆ:
- ์ซ์๋ ์คํ์ push
- ์ฐ์ฐ์๋ฅผ ๋ง๋๋ฉด ์คํ์์ ์ซ์ 2๊ฐ pop → ์ฐ์ฐ → ๊ฒฐ๊ณผ push
๐ ์ค๋ณต ๋ฌธ์ ์ ๊ฑฐ / ๋ฌธ์์ด ์์ถ
- ์์: abbaca → ca (๊ฐ์ ๋ฌธ์๊ฐ ์ฐ์์ผ๋ก ๋์ฌ ๋ ์ ๊ฑฐ)
- ์๊ณ ๋ฆฌ์ฆ:
- ์คํ์ ๋ฌธ์๋ฅผ ํ๋์ฉ push
- ํ์ฌ ๋ฌธ์์ top์ด ๊ฐ์ผ๋ฉด pop (์ค๋ณต ์ ๊ฑฐ)
๐ Histogram์์ ๊ฐ์ฅ ํฐ ์ง์ฌ๊ฐํ ๊ตฌํ๊ธฐ
- ์ค๋ช : ๋ง๋๊ทธ๋ํ์์ ๊ฐ์ฅ ๋์ ์ง์ฌ๊ฐํ ๊ตฌํ๊ธฐ
- ์๊ณ ๋ฆฌ์ฆ ํต์ฌ:
- ๊ฐ ๋ง๋์ ๋ํด ์ผ์ชฝ/์ค๋ฅธ์ชฝ์ผ๋ก ๊ฐ ์ ์๋ ํ๊ณ๋ฅผ ์คํ์ ์ด์ฉํด ๊ณ์ฐ
๐ Next Greater Element (๋ค์ ํฐ ์ซ์ ์ฐพ๊ธฐ)
- ์ค๋ช : ๋ฐฐ์ด์์ ํ์ฌ ์ซ์๋ณด๋ค ์ค๋ฅธ์ชฝ์ ์๋ ์ซ์ ์ค ์ฒ์์ผ๋ก ํฐ ์ซ์ ์ฐพ๊ธฐ
- ์๊ณ ๋ฆฌ์ฆ:
- ์คํ์ ์ธ๋ฑ์ค ๋๋ ๊ฐ์ ์ ์ฅ
- ํ์ฌ ๊ฐ์ด ์คํ top๋ณด๋ค ํฌ๋ฉด, ํด๋น ์ธ๋ฑ์ค์ ํ์ฌ ๊ฐ์ ์ ๋ต์ผ๋ก ๊ธฐ๋กํ๊ณ pop
๐ DFS (๊น์ด ์ฐ์ ํ์) ๋น์ฌ๊ท ๊ตฌํ
- ์ค๋ช : ์คํ์ ํ์ฉํด ์ฌ๊ท ์์ด DFS ๊ตฌํ
๐ ๋ฐฑํธ๋ํน ์ ์คํ ์ฌ์ฉ
- ์ค๋ช : ๊ฒฝ๋ก ์ ์ฅ, ์ํ ๋ณต์ ๋ฑ์ ์ํด ์คํ์ ์ฌ์ฉ
๐ง ์คํ ์์ฉ ํ
- ๋ฌธ์ ์ "์ต๊ทผ ๊ฒ" ๋๋ "๋๋๋ฆฌ๊ธฐ" ๊ฐ๋ ์ด ๋ณด์ด๋ฉด ์คํ์ ์์ฌ
- ๋ฌธ์์ด ๋ฌธ์ ์์๋ ์คํ์ ๋ง์ด ํ์ฉ (ํนํ ์ค์ฒฉ ๊ตฌ์กฐ ํ์ , ๋๋๋ฆฌ๊ธฐ, ์ค๋ณต ์ ๊ฑฐ ๋ฑ).
๐ ์๊ฐ๋ณต์ก๋
์ฝ์ /์ญ์ O(1)
'CS > Data Structures' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
3. ๋ฑ (Deque) (0) | 2025.05.19 |
---|---|
2. ํ (Queue) (1) | 2025.05.19 |