Stack
- ์คํ์ ํ์ ์ ์ถ์ด๋ผ๋ ๊ท์น์ ๋ฐ๋ผ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ์ ๊ทผํ๋ ์ ํ ์๋ฃ๊ตฌ์กฐ
- ์ฌ์ฉ ์์ : ์น ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ, ๋ฌธ์์ด ์ญ์, ๊ดํธ ๊ฒ์ฌ, ์คํ ์ทจ์ ๊ธฐ๋ฅ, ์ฌ๊ท ํจ์ ํธ์ถ
์คํ์ ๊ฐ๋
- ์คํ์ LIFO(Last In, First Out) ๋๋ FILO(First In, Last Out) ์์น์ ๋ฐ๋ผ ์๋ํ๋ ์๋ฃ๊ตฌ์กฐ
- ์ด ์์น์ ๊ฐ์ฅ ๋ง์ง๋ง์ ์ฝ์ ๋ ์์๊ฐ ๊ฐ์ฅ ๋จผ์ ์ ๊ฑฐ๋๋ค๋ ๊ฒ์ ์๋ฏธํจ
์คํ ์๋ฃ๊ตฌ์กฐ์ ADT(์ถ์ ๋ฐ์ดํฐ ํ์ )
Push : ์คํ์ ๋งจ ์์ ์์๋ฅผ ์ถ๊ฐํฉ๋๋ค.
Pop : ์คํ์ ๋งจ ์์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ , ๊ทธ ์์๋ฅผ ๋ฐํํฉ๋๋ค.
Peek : ์คํ์ ๋งจ ์ ์์๋ฅผ ๋ฐํํ์ง๋ง, ์ ๊ฑฐํ์ง ์์ต๋๋ค.
IsEmpty : ์คํ์ด ๋น์ด ์๋์ง ํ์ธํฉ๋๋ค.
๋ฐฐ์ด ๊ธฐ๋ฐ ์คํ (Stack ํด๋์ค)
๊ตฌ์ฑ์์
- ๋ด๋ถ ๋ฐฐ์ด : ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์กฐ์ ๋ ์ ์๋ ๋ฐฐ์ด
- Top ํฌ์ธํฐ : ์คํ์ ์ต์์ ์์(๋ง์ง๋ง์ผ๋ก ์ถ๊ฐ๋ ์์)๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ ๋๋ ์ธ๋ฑ์ค
- Capacity : ๋ด๋ถ ๋ฐฐ์ด์ ์ต๋ ํฌ๊ธฐ
- Size : ํ์ฌ ์คํ์ ์ ์ฅ๋ ์์์ ์
์๋ ์๋ฆฌ
- ๋ด๋ถ ๋ฐฐ์ด : Stack์ ๋ด๋ถ์ ์ผ๋ก ๋์ ๋ฐฐ์ด์ ์ฌ์ฉํ์ฌ ์์๋ค์ ์ ์ฅ. ์ด ๋ฐฐ์ด์ Vector ํด๋์ค๋ฅผ ํตํด ๊ตฌํ๋์ด ์์ผ๋ฉฐ, ํ์์ ๋ฐ๋ผ ๋์ ์ผ๋ก ํฌ๊ธฐ๊ฐ ์กฐ์ ๋จ
- Top ์์ : ์คํ์ ์ต์๋จ์ ์๋ ์์(๊ฐ์ฅ ์ต๊ทผ์ ์ถ๊ฐ๋ ์์)๋ ๋ด๋ถ ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ก ๊ด๋ฆฌ
- Push ์ฐ์ฐ : ์๋ก์ด ์์๋ฅผ ์คํ์ ๋งจ ์์ ์ถ๊ฐํ ๋, ์ด ์์๋ ๋ฐฐ์ด์ ๋ง์ง๋ง์ ์ถ๊ฐ. ํ์ํ ๊ฒฝ์ฐ ๋ฐฐ์ด ํฌ๊ธฐ ํ์ฅ
- Pop ์ฐ์ฐ : ์คํ์ ๋งจ ์์์ ์์๋ฅผ ์ ๊ฑฐํ ๋, ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๊ฐ ์ ๊ฑฐ๋๊ณ ๋ฐํ๋จ
- Peek ์ฐ์ฐ : ์คํ์ ์ต์๋จ ์์๋ฅผ ํ์ธํ๋ ค๋ฉด, ๋ฐฐ์ด์ ๋ง์ง๋ง ์์๋ฅผ ์กฐํ
์ฃผ์ ๋ฉ์๋
- push(E item) : ์คํ์ ์ต์๋จ์ ์์๋ฅผ ์ถ๊ฐ
- pop() : ์คํ์ ์ต์๋จ์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ , ๊ทธ ์์๋ฅผ ๋ฐํ. ์คํ์ด ๋น์ด์๋ ๊ฒฝ์ฐ EmptyStackException์ ๋์ง ์ ์์
- peek() : ์คํ์ ์ต์๋จ ์์๋ฅผ ๋ฐํํ์ง๋ง, ์ ๊ฑฐํ์ง ์์. ์คํ์ด ๋น์ด์๋ ๊ฒฝ์ฐ EmptyStackException์ ๋์ง ์ ์์
- isEmpty() : ์คํ์ด ๋น์ด์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํ. ๋น์ด์์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํ
- size() : ์คํ์ ์ ์ฅ๋ ์์์ ์๋ฅผ ๋ฐํ
- search(Object o) : ์ง์ ๋ ๊ฐ์ฒด๊ฐ ์คํ์์ ์ผ๋ง๋ ๋ฉ๋ฆฌ ์๋์ง๋ฅผ ๋ฐํ. ์คํ์ ์ต์๋จ๋ถํฐ ๊ฐ์ฒด๊น์ง์ ๊ฑฐ๋ฆฌ๋ฅผ 1๋ก ์์ํ์ฌ ๊ณ์ฐ. ๊ฐ์ฒด๊ฐ ์คํ์ ์์ผ๋ฉด -1์ ๋ฐํ
- elementAt(int index) : ์คํ์์ ์ง์ ๋ ์ธ๋ฑ์ค์ ์๋ ์์๋ฅผ ๋ฐํ
- capacity() : ์คํ์ ํ์ฌ ์ฉ๋์ ๋ฐํ. ์ด๋ ์คํ ๋ด๋ถ์ ๋ฐฐ์ด์ด ๋ด์ ์ ์๋ ์์์ ์ต๋ ์๋ฅผ ๋ํ๋
- ensureCapacity(int minCapacity) : ์คํ์ด ์ต์ํ ์ง์ ๋ ์ฉ๋์ ๊ฐ๋๋ก ํจ
- trimToSize() : ์คํ์ ์ฉ๋์ ํ์ฌ ์คํ ํฌ๊ธฐ์ ๋ง๊ฒ ์กฐ์ . ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ ์ค์ผ ์ ์์
์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฐ ์คํ (Deque ์ธํฐํ์ด์ค)
๊ตฌ์ฑ์์
- ๋ ธ๋: ๊ฐ ์์๋ ๋ ธ๋๋ก ํํ. ๋ ธ๋๋ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ(ํฌ์ธํฐ)๋ฅผ ํฌํจ
- ํค๋ ํฌ์ธํฐ: ์คํ์ ์ต์์ ์์(๋งจ ์ฒ์ ๋๋ ๋ง์ง๋ง์ ์ถ๊ฐ๋ ์์)๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ
- Size: ํ์ฌ ์คํ์ ์ ์ฅ๋ ์์์ ์
์๋ ์๋ฆฌ
- ๋ ธ๋ ๊ธฐ๋ฐ ๊ตฌ์กฐ: ์คํ์ ๊ฐ ์์๋ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ๋ ธ๋๋ก ํํ. ๊ฐ ๋ ธ๋๋ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง
- ํค๋๋ฅผ ์ฌ์ฉํ ์ฐ์ฐ: ์คํ ์ฐ์ฐ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํค๋(๋๋ ํ ์ผ)์์ ์ํ๋ฉ๋๋ค. ์๋ก์ด ์์๋ ๋ฆฌ์คํธ์ ํค๋์ ์ถ๊ฐ๋๋ฉฐ, ํค๋์์ ์ ๊ฑฐ๋ฉ๋๋ค.
- Push ์ฐ์ฐ: ์๋ก์ด ์์๋ฅผ ์คํ์ ๋งจ ์์ ์ถ๊ฐํ ๋, ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํค๋์ ์ ๋ ธ๋๋ฅผ ์ถ๊ฐ
- Pop ์ฐ์ฐ: ์คํ์ ๋งจ ์์์ ์์๋ฅผ ์ ๊ฑฐํ ๋, ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํค๋ ๋ ธ๋๋ฅผ ์ ๊ฑฐํ๊ณ ๊ทธ ๋ฐ์ดํฐ๋ฅผ ๋ฐํ
- Peek ์ฐ์ฐ: ์คํ์ ์ต์๋จ ์์๋ฅผ ํ์ธํ ๋, ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ํค๋ ๋ ธ๋์ ๋ฐ์ดํฐ๋ฅผ ์กฐํ
์ฃผ์ ๋ฉ์๋
- addFirst(E item) / offerFirst(E item): ์คํ์ ์ต์๋จ์ ์์๋ฅผ ์ถ๊ฐ (ArrayDeque์์ ์ฌ์ฉ)
- removeFirst() / pollFirst(): ์คํ์ ์ต์๋จ์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ , ๊ทธ ์์๋ฅผ ๋ฐํ
- peekFirst(): ์คํ์ ์ต์๋จ ์์๋ฅผ ๋ฐํํ์ง๋ง, ์ ๊ฑฐํ์ง ์์
- isEmpty(): ์คํ์ด ๋น์ด์๋์ง ์ฌ๋ถ๋ฅผ ๋ฐํ. ๋น์ด์์ผ๋ฉด true, ๊ทธ๋ ์ง ์์ผ๋ฉด false๋ฅผ ๋ฐํ
- size(): ์คํ์ ์ ์ฅ๋ ์์์ ์๋ฅผ ๋ฐํ
- iterator() : ๋ฐํฌ์ ์์๋ค์ ์ํํ๋ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฐํ
- descendingIterator() : ๋ฐํฌ์ ์์๋ค์ ์ญ์์ผ๋ก ์ํํ๋ ์ดํฐ๋ ์ดํฐ๋ฅผ ๋ฐํ
๋ฐฐ์ด ๊ธฐ๋ฐ ์คํ vs ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฐ ์คํ
- ์ฑ๋ฅ ์ฐจ์ด
- ๋ฐฐ์ด ๊ธฐ๋ฐ์ ๋๋ค ์ก์ธ์ค๊ฐ ๋น ๋ฅด์ง๋ง ํฌ๊ธฐ ์กฐ์ ์ ๋น์ฉ์ด ๋ญ๋๋ค.
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฐ์ ์์ ์ถ๊ฐ ๋ฐ ์ ๊ฑฐ๊ฐ ๋น ๋ฅด์ง๋ง ๋๋ค ์ก์ธ์ค๊ฐ ๋๋ฆฝ๋๋ค.
- ์ฉ๋
- ๋ฐฐ์ด ๊ธฐ๋ฐ์ ํฌ๊ธฐ ๋ณ๋์ด ์ ๊ณ , ๋น ๋ฅธ ์ธ๋ฑ์ค ๊ธฐ๋ฐ ์ ๊ทผ์ด ํ์ํ ๋ ์ ํฉํฉ๋๋ค.
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ ๊ธฐ๋ฐ์ ์์ฃผ ํฌ๊ธฐ๊ฐ ๋ณํ๊ฑฐ๋ ๋์์๋ง ์์ ์ด ์ผ์ด๋ ๋ ์ ๋ฆฌํฉ๋๋ค.
์คํ์ ์ฅ์ ๊ณผ ๋จ์
- ์ฅ์
- ๊ฐ๋จํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค.
- ๋ฐ์ดํฐ์ ์์๊ฐ ์ค์ํ ๊ฒฝ์ฐ์ ์ ์ฉํฉ๋๋ค.
- ๋จ์
- ํฌ๊ธฐ๊ฐ ์ ํ์ ์ผ ์ ์์ต๋๋ค (ํนํ ๋ฐฐ์ด ๊ธฐ๋ฐ).
- ์ค๊ฐ ์์์ ๋ํ ์ ๊ทผ์ด ๋นํจ์จ์ ์ ๋๋ค.
์ฐธ๊ณ ์๋ฃ : ใ์ฝ๊ฒ ๋ฐฐ์ฐ๋ ์๋ฃ๊ตฌ์กฐ with ์๋ฐใ
'๐๏ธ ์๋ฃ๊ตฌ์กฐ์ ์๊ณ ๋ฆฌ์ฆ > ์๊ณ ๋ฆฌ์ฆ,์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์ ๋ ฌ] ๊ณ ๊ธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ(๋ณํฉ/ํต/ํ/์ ) (1) | 2023.11.21 |
---|---|
[์ ๋ ฌ] ๊ธฐ๋ณธ ์ ๋ ฌ ์๊ณ ๋ฆฌ์ฆ(์ ํ/๋ฒ๋ธ/์ฝ์ ) (1) | 2023.11.21 |
[ํ] ์ฐ์ ์์ ํ : ํ (0) | 2023.11.21 |
[ํ] ๋ฐฐ์ด ๊ธฐ๋ฐ ํ์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ๊ธฐ๋ฐ ํ (2) | 2023.11.21 |
[๋ฆฌ์คํธ] ๋ฐฐ์ด ๋ฆฌ์คํธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ (1) | 2023.11.21 |