๐ฏStack
- Stack์ด๋ผ๋ ๋จ์ด์ ์์ฒด ๋ป์ '๋๋ฏธ'
- ๋ทํ์์ ์ ์๋ฅผ ์์๋๋ฅผ ์์ํ๋ฉด ๊ฐ๋จํ๋ค. ์๋ก์ด ์ ์๋ฅผ ์์ ๋ ๋งจ ์์๋ค๊ฐ ์ ์๋ฅผ ์๊ณ , ์ ์๋ฅผ ์ฌ์ฉํ ๋๋
(๊ตฌ์ง ์๊ณ ์ค๋ฝ๊ฒ ์๋์ ์ ์๋ฅผ ๊บผ๋ด์ฐ์ง ์๊ณ ๋ณดํต์) ๋งจ ์์ ์๋ ์ ์๋ฅผ ๊ฐ์ง๊ณ ๊ฐ๋ ๊ฒ๊ณผ ๊ฐ๋ค. (๋์ค์ ๋ค์ด๊ฐ ๊ฒ์ ๋จผ์ ์ด๋ค/ Last in First out/ LIFO/ ํ์
์ ์ถ)
์ด๋ฏธ์ง์ถ์ฒ: https://en.wikipedia.org/
๐งฏStack method
์คํ์ ์๋ฃ๊ตฌ์กฐ ๊ตฌํ์ ๋ฐฐ์ด์ ์ด์ฉํด๋ ๋๊ณ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ฅผ ์ด์ฉํด๋ ๊ฐ๋ฅํ๋ค. ๋๋ ๊ฐ์ธ์ ์ผ๋ก ๋ฐฐ์ด ์ฌ์ฉ์ด ์กฐ๊ธ ๋ ์ต์ํ๊ธฐ ๋๋ฌธ์ ๋ฐฐ์ด์ ์ด์ฉํด์ ์ฝ๋๋ฅผ ์์ฑํด๋ณด์๋ค. ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฉ์ธ ํ๋ก๊ทธ๋จ์์ ํจ์ A๋ฅผ ํธ์ถํ๋ฉด ๋ฉ์ธ ํ๋ก๊ทธ๋จ ์์ ํจ์ A๊ฐ ์์ด๊ณ , ํจ์ A์ ์ํ ์ค์ ํจ์ B๊ฐ ํธ์ถ๋๋ฉด, ํจ์ A์์ ํจ์ B๊ฐ ์คํ์ฒ๋ผ ์์ด๊ฒ ๋๋ ๊ตฌ์กฐ๋ค. ํจ์ B์ ์คํ์ด ์๋ฃ๋๋ฉด ํจ์ A๊ฐ ์คํ๋๊ณ , ํจ์ A์ ์คํ์ด ์๋ฃ๋๋ฉด ์ฃผ ํ๋ก๊ทธ๋จ์ ์คํ์ด ์์๋๋ค(LIFO)๋ ์ ์ด ์ ๊ธฐํ๋ค.
- size
์คํ์ ํ์ฌ ์์ ๊ฐ์๋ฅผ ๋ฐํ, top๊ณผ ๋์ผ
- push(element)
์์๋ฅผ ์คํ์ ์ต์๋จ์ ์ถ๊ฐ, ์๋์๋ถํฐ ์์๋ฅผ ์์๊ฐ๋ ๋ฐฉ์์ผ๋ก ์์๊ฐ ํ๋์ฉ push ๋ ๋๋ง๋ค top๋ 1์ฉ ์ฆ๊ฐ
- pop
์คํ์ ์ต์๋จ์์ ์์๋ฅผ ์ ๊ฑฐํ๊ณ ๋ฐํ, ์์์๋ถํฐ ์์๋ฅผ ์ ๊ฑฐํ ๋๋ง๋ค(pop) top๋ 1์ฉ ๊ฐ์
๐งฏStack ํ์ฉ
์๋ฃ ๊ตฌ์กฐ๋ฅผ ์ ๋ฐฐ์์ผํ๋์ง, ์ด๊ฑธ ๋์ฒด ์ด๋์ ์ด๋ป๊ฒ ์จ๋จน๋๋ค๋ ๊ฒ์ธ์ง ๋๋ฃจ๋ญ์ ํด์ ์ ๋ชจ๋ฅด๊ฒ ์ ๋๋ ์ค์ ๋ก ํด๋น ์๋ฃ ๊ตฌ์กฐ๊ฐ ์ผ์ ์ํ์์ ์ด๋ป๊ฒ ์ฌ์ฉ๋๊ณ ์๋์ง ์ฐพ์๋ดค๊ณ ์์๋ฅผ ๋ณด๋ฉด ์๋ฆฌ๊ฐ ์กฐ๊ธ ๋ ๋ช
ํํ๊ฒ ์ดํด๋๋ค.
์คํ์ ๊ฒฝ์ฐ,
1. ์น ๋ธ๋ผ์ฐ์ ๋ฐฉ๋ฌธ๊ธฐ๋ก(๋ค๋ก ๊ฐ๊ธฐ): ๊ฐ์ฅ ๋์ค์ ์ด๋ฆฐ ํ์ด์ง๋ถํฐ ๋ค์ ๋ณด์ฌ์ค๋ค.
2. ์ญ์ ๋ฌธ์์ด ๋ง๋ค๊ธฐ: ๊ฐ์ฅ ๋์ค์ ์
๋ ฅ๋ ๋ฌธ์๋ถํฐ ์ถ๋ ฅํ๋ค.
3. ์คํ ์ทจ์ (undo) : ๊ฐ์ฅ ๋์ค์ ์คํ๋ ๊ฒ๋ถํฐ ์คํ์ ์ทจ์ํ๋ค.
4. ํ์ ํ๊ธฐ๋ฒ ๊ณ์ฐ
5. ์์์ ๊ดํธ ๊ฒ์ฌ (์ฐ์ฐ์ ์ฐ์ ์์ ํํ์ ์ํ ๊ดํธ ๊ฒ์ฌ)
๋ฑ์ ์ฌ์ฉ๋๋ค.
๐งฏStack ์ค๋ต๋
ธํธ
- ์คํ์ ๋ํ ์ค๋ช
์ค ํ๋ฆฐ ๊ฒ์ ๋ชจ๋ ๊ณ ๋ฅด๋ฉด?
A ๋จผ์ ๋ค์ด๊ฐ๊ฒ ๋์ค์ ๋์ค๋ First In Last Out ๊ตฌ์กฐ์ด๋ค
B ๋จผ์ ๋ค์ด๊ฐ๊ฒ ๋จผ์ ๋์ค๋ First In First Out ๊ตฌ์กฐ์ด๋ค.
C top ๋ฉ์๋๋ ์คํ์ ๋งจ ์์ ์๋ ๊ฐ์ ๊บผ๋ด๊ณ , ํด๋น ๊ฐ์ ๋ฐํํ๋ค.
D ์คํ์ ํ ๋น๋ ๊ณต๊ฐ์ด ๊ฝ ์ฐจ๋ฉด ๋์ด์ push ํ ์ ์๋ค.
E ์ฌ๊ท ํจ์๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋๋ค.
- B. ๋จผ์ ๋ค์ด๊ฐ๊ฒ ๋์ค์ ๋์ค๋ First in Last out ๊ตฌ์กฐ
- C. top์ ๋ฉ์๋๊ฐ ์๋๋ผ ํฌ์ธํฐ์ ์ญํ ๋ก ์์ฑ(property)์ ํด๋นํ๋ค. ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๊ตฌ๋ถํด์ ๊ธฐ์ตํ๋ ๊ฒ์ด ์ฝ๊ฐ ํท๊ฐ๋ ธ๋๋ฐ ๋ฉ๋ชจํด๋ฌ์ผ์ง! ์คํ์ ๋งจ ์์ ์๋ ๊ฐ์ ๊บผ๋ด๊ณ , ํด๋น ๊ฐ์ ๋ฐํํ๋ค๋ ์ค๋ช
์ pop ๋ฉ์๋์ ๊ดํ ๊ฒ์ด๋ค. ๋ฉ์๋๋ size, pop, push๋ง ํด๋น๋๋ค.
- D. ์คํ์ ํ ๋น๋ ๊ณต๊ฐ์ด ๊ฝ ์ฐจ๋ฉด ๋์ด์ push ํ ์ ์๋ค. (์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๋ ์ด์ง ๋ค๋ฅด๋ค. ์๋ฃ ๊ตฌ์กฐ๋ผ๋ ๊ฐ๋
์ ์ผ๋ก ๋ดค์ ๋๋ ์คํ์ ํ ๋น๋ ๊ณต๊ฐ์ด ์๊ณ ๊ทธ ๊ณต๊ฐ์ด ๊ฐ๋์ฐจ๋ฉด ํธ์๋ฅผ ํ ์ ์๋ค)
- E. ์ฌ๊ท ํจ์๋ฅผ ์คํํ ๋๋ง๋ค ์คํ์ด ์์ธ๋ค.(์ฌ๊ท ํจ์๋ฅผ ์คํํ ๋ ์ฌ์ฉ๋๋ค.)
์ฐธ๊ณ !
- ํ์ ํ๊ธฐ๋ฒ
์ปดํจํฐ๊ฐ ์ฐ์ฐํ๊ธฐ ์ฌ์ด ํ๊ธฐ๋ฒ
ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ค์ ํ๊ธฐ๋ฒ ์ฌ์ฉ (9*3) + ( 15/5) -2 ์ด๋ฐ ์์ผ๋ก
- stack.peek()
์ ์ผ ์๋จ์ ์๋ ์์๋ฅผ ์ด๋ ํ ๊ฒ๋ ํ์ง ์๊ณ ๊ทธ ๊ฐ๋ง ๋ฐํํด์ฃผ๋ ๋ฉ์๋