728x90
๐ ์ค๋ ๋ฐฐ์ด ๋ด์ฉ!
- ์คํ (Stack)
- ํ (Queue)
โ๏ธ ์๋ฃ๊ตฌ์กฐ
- ์๋ฃ(๋ฐ์ดํฐ)๋ฅผ ์ฒด๊ณ์ ์ผ๋ก ์ ๋ฆฌํ์ฌ ์ ์ฅํ๊ณ ํ์ฉํ๋ ๊ตฌ์กฐ ๊ทธ ์์ฒด
- ๊ตฌํ ๋ฐฉ์์๋ ์ ํ X
- Stack, Queue, Tree, Graph ์ ๋ค๊ฐ์ง ๊ตฌ์กฐ
โ Java์์๋ Stack์ Stack ํด๋์ค๋ก ๊ตฌํํ์ฌ ์ ๊ณต
But, Queue๋ Queue ์ธํฐํ์ด์ค๋ง ์๊ณ ๋ณ๋์ ํด๋์ค๊ฐ ์์ โ Queue ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค ์ฌ์ฉ
โ๏ธ ์คํ (Stack)
- ๋ฐ์ดํฐ(data)๋ฅผ ์์๋๋ก ์๋ ์๋ฃ๊ตฌ์กฐ Ex.ํ๋ง๊ธ์ค
- Stack์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ 'PUSH', ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๊ฒ์ 'POP'
Ex. ๋ํ์ ์ผ๋ก ๋ธ๋ผ์ฐ์ ์ ๋ค๋ก ๊ฐ๊ธฐ, ์์ผ๋ก ๊ฐ๊ธฐ ๊ธฐ๋ฅ์ ๊ตฌํํ ๋ ์ฌ์ฉ๋จ
1. ์๋ก์ด ํ์ด์ง๋ก ์ ์ํ๋ฉด โ ํ์ฌ ํ์ด์ง Prev Stack์ ๋ณด๊ด
2. ์ด์ ํ์ด์ง๋ก ๋์๊ฐ ๋ โ ํ์ฌ ํ์ด์ง๋ฅผ Next Stack์ ๋ณด๊ด / Prev Stack์ ๊ฐ์ฅ ๋์ค์ ๋ณด๊ด๋ ํ์ด์ง(ํ์ฌ ํ์ด์ง์ ์ ์ ์์ธ ํ์ด์ง)๋ฅผ ํ์ฌ ํ์ด์ง๋ก ๊ฐ์ ธ์ด
3. ๋ค์ ์์ ๋ฐฉ๋ฌธํ ํ์ด์ง๋ก ์ด๋ํ ๋ โ Next Stack์ ๊ฐ์ฅ ๋ง์ง๋ง์ผ๋ก ๋ณด๊ด๋ ํ์ด์ง๋ฅผ ๊ฐ์ ธ์ด
4. ๋ง์ง๋ง์ผ๋ก ํ์ฌ ํ์ด์ง๋ฅผ Prev Stack์ ๋ณด๊ด
โ Stack์ ํน์ง
- LIFO (Last In First Out)
- ๋ฐ์ดํฐ๋ ํ๋์ฉ๋ง ๋ฃ๊ณ ๋บ ์ ์์
- ํ๋์ ์ ์ถ๋ ฅ ๋ฐฉํฅ (์ ํ์ ์ ๊ทผ)
โ Stack ๋ฉ์๋
( ๋จผ์ ํด๋์ค์ ๋ฉ์๋ ๋ง๋ค๊ณ ๋ฉ์ธ์์ ์ฌ์ฉํด์ผํจ )
push()
- ์คํ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐpop()
- ๋ง์ง๋ง์ผ๋ก ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์คํ์์ ๊บผ๋(์ญ์ )
(๋น์ด์์ผ๋ฉด EmptyStackException ๋ฐ์)peek()
- ์คํ์ ๊ฐ์ฅ ๋์ค์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ ๋ฐํsize()
- ์คํ์ ํฌ๊ธฐ ๋ฐํshow()
- ํ์ฌ ์คํ์ ํฌํจ๋์ด ์๋ ๋ชจ๋ ๋ฐ์ดํฐ ๋ฐํ (๊ทธ๋ฅ ์ฝ์ด์ด)clear()
- ์คํ์ ๋ชจ๋ ๋ฐ์ดํฐ ์ญ์ empty()
- ์คํ์ด ๋น์ด์๋์ง boolean ํ์ ์ผ๋ก ๋ฐํsearch(data)
- ์คํ์์ data๋ฅผ ์ฐพ์ ๊ทธ ์์น๋ฅผ int ํ์ ์ผ๋ก ๋ฐํ
(๋ชป์ฐพ์ผ๋ฉด -1 ๋ฐํ)
(๋ฐฐ์ด๊ณผ ๋ฌ๋ฆฌ ์์น(์ธ๋ฑ์ค)๊ฐ 1๋ถํฐ ์์)
๐ก push() ์ add() ์ฐจ์ด
- push()
โ stack์์ ์ ๊ณต
โ ๋ฆฌํด๊ฐ์ด <E>
- add()
โ List์์ ์ ๊ณต
โ ๋ฆฌํด๊ฐ์ด boolean
โ Stack ํด๋์ค์ ๋จ์
- synchronized ํค์๋๊ฐ ๋ถ์ด์๊ธฐ ๋๋ฌธ์ Thread-safe ํจ
- ์ด๊ธฐ ์ฉ๋์ ์ค์ ํ ์ ์๋ ์์ฑ์๊ฐ ์๋ค ๋ณด๋ ๋ฐ์ดํฐ์ ์ฝ์ ์ ๋ง์ด ํ๊ฒ ๋๋ฉด ๋ฐฐ์ด์ ๋ณต์ฌํด์ผ ํ๋ ์ผ์ด ๋น๋ฒํ๊ฒ ๋ฐ์ ๊ฐ๋ฅ
โ๏ธ ํ (Queue)
- Stack๊ณผ ๋ฐ๋๋๋ ๊ฐ๋
- ๋ค์ด๊ฐ ์์ผ๋ก ์ฐจ๋ก๋ก ๋์ด Ex.ํจ๊ฒ์ดํธ
- Queue์ ๋ฐ์ดํฐ๋ฅผ ๋ฃ๋ ๊ฒ์ 'enqueue', ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ด๋ ๊ฒ์ 'dequeue'
Ex. ๋ํ์ ์ผ๋ก ํ๋ฆฐํฐ๋ก ๋ฌธ์๋ฅผ ์์๋๋ก ์ธ์ํ ๋ ์ฌ์ฉ๋จ
1. ๋ฌธ์ ์์ฑ ํ ์ถ๋ ฅ๋ฒํผ ๋๋ฅด๋ฉด โ ํด๋น ๋ฌธ์๊ฐ ์ธ์ ์์ (์์๊ธฐ์ต์ฅ์น์) Queue์ ๋ค์ด๊ฐ
2. ํ๋ฆฐํฐ๊ฐ ์ธ์ ์์ Queue์ ๋ค์ด์จ ๋ฌธ์๋ฅผ ๋ค์ด์จ ์์๋๋ก ์ธ์
- ์ปดํจํฐ ์ฅ์น๋ค ์ฌ์ด์์ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ์ ๋, ๊ฐ ์ฅ์น ์ฌ์ด์ ์๋ ์ฐจ์ด, ์๊ฐ ์ฐจ์ด ๊ทน๋ณต์ ์ํด ์์ ๊ธฐ์ต ์ฅ์น์ ์๋ฃ๊ตฌ์กฐ๋ก Queue ์ฌ์ฉ โ ๋ฒํผ(buffer)
๐ก ๋ฒํผ๋ง ( buffering )
์ปดํจํฐ์ CPU์์๋ ์ด๋ฒคํธ๋ฅผ ๊ท์น์ ์ผ๋ก ์ฒ๋ฆฌํ๋๋ฐ, ๋๋ถ๋ถ์ ์ปดํจํฐ ์ฅ์น์์๋ ์ด๋ฒคํธ๊ฐ ๋ถ๊ท์นํ๊ฒ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ ๊ทธ ๋ถ๊ท์น์ ์ธ ์ด๋ฒคํธ๋ฅผ ๊ท์น์ ์ผ๋ก ์ฒ๋ฆฌํ๊ธฐ ์ํด ๋ฒํผ(buffer)๋ฅผ ์ฌ์ฉํ๋ ๊ฒ
Ex. ์ปดํจํฐ / ํ๋ฆฐํฐ ์ฌ์ด์ ๋ฐ์ดํฐ(data) ํต์
( ํ๋ฆฐํฐ๋ ์๋๊ฐ ๋๋ฆฌ๊ณ ์ปดํจํฐ์ CPU๋ ๋ฐ์ด์ฒ ์ฒ๋ฆฌ ์๋๊ฐ ๊ทธ์ ๋นํด ๋น ๋ฆ )
1. CPU๊ฐ ๋น ๋ฅด๊ฒ ์ธ์์ ํ์ํ ๋ฐ์ดํฐ(data) ๋ง๋ค๊ณ , ์ธ์ ์์ Queue์ ์ ์ฅ ํ ๋ค๋ฅธ ์์ ํจ
2. ํ๋ฆฐํฐ๋ ์ธ์ ์์ Queue์์ ๋ฐ์ดํฐ(data) ๋ฐ์์ ์ผ์ ํ ์๋๋ก ์ธ์
โ Queue์ ํน์ง
- FIFO(First In First Out)
- ๋ฐ์ดํฐ๋ ํ๋์ฉ๋ง ๋ฃ๊ณ ๋บ ์ ์์
- ๋๊ฐ์ ์ ์ถ๋ ฅ ๋ฐฉํฅ
โ Queue ๋ฉ์๋
( ๋จผ์ ํด๋์ค์ ๋ฉ์๋ ๋ง๋ค๊ณ ๋ฉ์ธ์์ ์ฌ์ฉํด์ผํจ )
add(data)
- ํ์ ๋ฐ์ดํฐ ์ถ๊ฐ
( ์ฑ๊ณตํ๋ฉด true๋ฅผ ๋ฐํ, ์ ์ฅ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด IllegalStateException ๋ฐ์ )poll()
- ๊ฐ์ฅ ๋จผ์ ์ถ๊ฐ๋ ๋ฐ์ดํฐ๋ฅผ ํ์์ ๊บผ๋(์ญ์ )
( ๋น์ด์์ผ๋ฉด null ๋ฐํ )size()
- ํ์ ํฌ๊ธฐ ๋ฐํpeek()
- ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ์์ด ๋ฐํ(๊ทธ๋ฅ ์ฝ์ด์ด)
( ๋น์ด์์ผ๋ฉด null ๋ฐํ )element()
- ํ์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ์์ด ๋ฐํ (๊ทธ๋ฅ ์ฝ์ด์ด)
( peek ์ ๋ฌ๋ฆฌ ๋น์ด์์ผ๋ฉด NoSuchElementException ๋ฐ์ )show()
- ํ์ ๋ค์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ ๋ฐํ (๊ทธ๋ฅ ์ฝ์ด์ด)clear()
- ํ์ ๋ค์ด์๋ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ์ญ์
๐ ๋๋์
์ค๋์ ๊ฐ๋ ์ด ์๊ฐ๋ณด๋ค ๊ด์ฐฎ๊ธธ๋ ๋ญ์ง?? ํ๋๋ฐ coplit ๋ฌธ์ ๊ฐ ์ด๋ ค์ ๋คใ
๊ทธ๋์ ์ธ๋ฌธ์ ์ธ๋ฐ๋ ์ ์ดํด๊ฐ ์๋๋ ๋ถ๋ถ์ด ์์ด์ ์๊ฐ์ด ์ข ๊ฑธ๋ ธ๋ค
์ค๋ ์ดํด๋ฅผ ๋ง์น๊ณ ๋ด์ผ ๋ณด์ง ์๊ณ ํ์ด์ ๊ฐ์ด ์ ํ์ด๋ด์ผ๊ฒ ๋ค!
( ๋ณธ ๊ฒ์๋ฌผ์ 2022/09/22์ ์์ฑํ ๊ธ์ ์ฎ๊ธด ๊ธ์ ๋๋ค. ์๋ฌธ์ ์๊ธฐ์ ์์! )
728x90
728x90
๋ฐ์ํ
'โข CodeStates BootCamp > Section 2' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๐ [Section2] 6. ์๊ณ ๋ฆฌ์ฆ (0) | 2023.04.07 |
---|---|
๐ [Section2] 5. ์๋ฃ๊ตฌ์กฐ3 (0) | 2023.04.07 |
๐ [Section2] 4. ์๋ฃ๊ตฌ์กฐ2 (0) | 2023.04.07 |
๐ [Section2] 2. JSON (0) | 2023.04.07 |
๐ [Section2] 1. ์ฌ๊ทํจ์ (0) | 2023.04.07 |