๐งก ์๋ฃ๊ตฌ์กฐ ๋ฐ ์๊ณ ๋ฆฌ์ฆ ์คํฐ๋; ๋ ๋ฒ์งธ ์ฃผ์ '๋ฆฌ์คํธ'
- ๋ฆฌ์คํธ๋ Stack, Queue, Tree, Graph ๋ฑ๊ณผ ๊ฐ์ ๋ค๋ฅธ ์๋ฃ๊ตฌ์กฐ ๊ตฌํ์ ํ์ฉ๋ ๊ธฐ์ด ์๋ฃ๊ตฌ์กฐ์ด๋ค.
- ๋ฆฌ์คํธ๋ ๋ฐ์ดํฐ๋ฅผ ๋๋ํ ์ ์ฅํ๊ณ , ์ค๋ณต๋ ๋ฐ์ดํฐ์ ์ ์ฅ์ ํ์ฉํ๋ค.
- ์๋ฃ๊ตฌ์กฐ์์ ๋ฆฌ์คํธ๋ ๊ตฌํ๋ฐฉ๋ฒ์ ๋ฐ๋ผ ์ ํ ๋ฆฌ์คํธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ก ๋๋๋ค.
๐ง ์ผ๋ฐ์ ์ผ๋ก ์ฌ์ฉํ๋ ์ฉ์ด
(์ ํ) ์์ฐจ ๋ฆฌ์คํธ = ์ ํ ๋ฆฌ์คํธ
(์ ํ) ์ฐ๊ฒฐ ๋ฆฌ์คํธ = ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๐ ์์ฐจ ๋ฆฌ์คํธ(Ordered List)
- ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ ์์ ์์น๋ถํฐ ๋น์๋ฆฌ ์์ด ์๋ฃ๋ฅผ ์ฐ์ํ์ฌ ์ ์ฅํ๋ค.
- ์ฐ๋ฆฌ๊ฐ ํํํ๋ ๋
ผ๋ฆฌ์ ์ธ ์์์ ์ค์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ๋ฌผ๋ฆฌ์ ์ธ ์์๊ฐ ๊ฐ์ ๊ตฌ์กฐ์ด๋ค.
- ๋ฆฌ์คํธ์ ๋์ดํ ๋ฐ์ดํฐ๋ค์ด ์ผ์ ํ ์์๋ฅผ ๊ฐ์ง๋ฉฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋๋ค ์์ธ์ค๊ฐ ๊ฐ๋ฅํ๋ค.
- ์ ๊ท ๋ฐ์ดํฐ์ ์ฝ์
, ์ญ์ ๊ฐ ๋ฐ์ํ๋ ๊ฒฝ์ฐ์๋ ๋น์๋ฆฌ ์์ด ์์๋๋ก ์ฐ์ํ์ฌ ์ ์ฅ๋๋ฉฐ, ์์๋ฅผ ๋ค์ ๊ฐฑ์ ํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ด๋์ด ํ์ํ์ฌ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค.
๐ง ์ค๋ฒํค๋๋?
์ค๋ฒํค๋๋ ํ๋ก๊ทธ๋จ ์คํํ๋ฆ์์ ๋ํ๋๋ ํ์ ์ค ํ๋๋ก ์ด๋ค ์ฒ๋ฆฌ๋ฅผ ํ๊ธฐ ์ํด ๋ค์ด๊ฐ๋ ๊ฐ์ ์ ์ธ ์ฒ๋ฆฌ์๊ฐ, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ฏธํ๋ค.
- ์์ฐจ ๋ฆฌ์คํธ๋ ๊ตฌํํ ์๋ฃ๋ค์ ๋
ผ๋ฆฌ์ ์ธ ์์๋๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ฐ์ํ์ฌ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
- ํ์์๋ ํจ์จ์ , ์ฝ์
/์ญ์ ์ฐ์ฐ์๋ ๋นํจ์จ์
- ํ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํด๋ ๋ฐฐ์ด์ ์ฐ์ํด์ผ ํ๋ฏ๋ก ๊ณต๊ฐ์ด ๋จ์ ๋ฉ๋ชจ๋ฆฌ ๋ญ๋น ์ด๋
๋ฐฐ์ด(Array)
- ๊ฐ์ ์๋ฃํ์ ๊ฐ์ง ๋ณ์๋ฅผ ํ๋๋ก ๋ํ๋ธ ๊ฒ์ด๋ค.
- ์์ฐจ ๋ฆฌ์คํธ๋ฅผ ๊ตฌํํ ๊ฒ์ด๋ฏ๋ก ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ๊ธฐ๋ณธ์ ์ผ๋ก ํฌ๊ธฐ๋ฅผ ๋ฐ๊ฟ ์ ์๋ ์ ์ ์๋ฃ๊ตฌ์กฐ์ง๋ง, ๋ฐฐ์ด๋ ์ ์ ๋ฐฐ์ด(Static Array)๊ณผ ๋์ ๋ฐฐ์ด(Dynamic Array)์ด ์๋ค.
- ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค๋ ์ฐจ์ด ์ธ์๋ ์ ์ ๋ฐฐ์ด์ ์ ์ธ๋ ๋ธ๋ก์ด ๋๋๋ฉด ์๋ฉธ๋๋ ๋ฐ๋ฉด, ๋์ ๋ฐฐ์ด์ ํ๋ก๊ทธ๋๋จธ๊ฐ ์์ฑํ ์์ ๊ณผ ํด์ฒดํ ์์ ์ ๊ฒฐ์ ํ ์ ์๋ค.
- ๋ฐฐ์ด์ ๊ฐ ์์๋ ์๋ก ์ธ์ ํด ์์ด ํ๋์ ์์์ ์ ๊ทผํ ๋ ๊ทธ ์์ ์๋ ์์๋ ์บ์๋ก ๊ฐ์ ธ์ ์ฃผ๋ณ ์์์ ์ ๊ทผํ ๋ ๋น ๋ฅด๊ฒ ๋์ํ๋ค.(์บ์ ์ง์ญ์ฑ)
๐ง ์์ฐจ ๋ฆฌ์คํธ์ ๋ฐฐ์ด
์์ฐจ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด(Array)์ ํตํด ๊ตฌํํ ์ ์๋ค.
๐ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)
- ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ๋ฌผ๋ฆฌ์ ์์น๋ ์์์ ์๊ด์์ด ๋งํฌ์ ์ํด ๋
ผ๋ฆฌ์ ์ธ ์์๋ฅผ ๊ตฌํํ๋ ๋ฐฉ์์ด๋ค.
- ๊ฐ ๋
ธ๋์ ์ ์ฅ๋ ๋ค์ ๋
ธ๋์ ์ฃผ์์ ์ํด ์ฐ๊ฒฐ๋ ๊ตฌ์กฐ์ด๋ค.
- ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ฐ์๋ ์ฃผ์์ผ ํ์๊ฐ ์์ด ๋ฌผ๋ฆฌ์ ์ธ ์์๋ฅผ ๋ง์ถ๊ธฐ ์ํ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ์ง ์๋๋ค.
- ์ธ๋ฑ์ค๊ฐ ์์ด ๊ฒ์ ์ฑ๋ฅ์ด ์ข์ง ์๋ค.
- ํฌ์ธํฐ๋ฅผ ํตํด ๋ค์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์์ด ๋ฐ์ดํฐ ์ฝ์
๋๋ ์ญ์ ์ ๊ฐ๋ฆฌํค๋ ์ฃผ์๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก ์ฝ์
/์ญ์ ๊ฐ ์ฉ์ดํ๋ค.
- ๊ธธ์ด๊ฐ ๊ฐ๋ณ์ ์ด๋ฉฐ ํฌ์ธํฐ๋ฅผ ํตํด ๋ค์ ๋ฐ์ดํฐ์ ์์น๋ฅผ ๊ฐ๋ฆฌํค๋ฏ๋ก ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ๋ฐ์ํ๋ค.
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ๋ ๋ฉ๋ชจ๋ฆฌ์ ๋์ ํ ๋น์ ๊ธฐ๋ฐ์ผ๋ก ๊ตฌํ๋ ๋ฆฌ์คํธ
- ํ์์๋ ๋นํจ์จ์ , ์ฝ์
/์ญ์ ์ฐ์ฐ์๋ ํจ์จ์
- ๋ฉ๋ชจ๋ฆฌ ์ฌํ์ฉ์ด ์ฉ์ดํ๊ณ ๋นํ์๋ ๋ฐ์ดํฐ์ ์ ์ฌ๋ผ๋ ์ฅ์ ์ ์ทจํ ์คํธ๋ญ์ณ
๐ ์์ฐจ ๋ฆฌ์คํธ์ ์ฐ๊ฒฐ ๋ฆฌ์คํธ์ ์ญ์ ๋์ ๋น๊ต
- ์์ฐจ ๋ฆฌ์คํธ
์ญ์ ์ ์์ ๊ฐฑ์ (์ฃผ์์ ์ธ๋ฑ์ค ํ์ธ)
- ์ฐ๊ฒฐ ๋ฆฌ์คํธ
๊ฐ๋ฆฌํค๋ ์ฃผ์๋ง ๋ณ๊ฒฝ (๋ค์ ๊ฐ ์ฃผ์ ํ์ธ)
๐ JAVA ์ ๋ฆฌ์คํธ
์๋ฐ๋ ๋ฐฐ์ด๊ณผ ๋ฆฌ์คํธ ๋ชจ๋ ์ง์ํ๋ค.
- ๋ฐฐ์ด ex) String[]
๋ฐฐ์ด์ ์ด์ฉํ๋ฉด ์์๋ฅผ ์ถ๊ฐ, ์ญ์ , ๋ณ๊ฒฝํ๋ ๋ฉ์๋๋ฅผ ์ง์ ๊ตฌํํ์ฌ ์ฌ์ฉํด์ผ ํ๋ค.
- ๋ฆฌ์คํธ ex) ArrayList<>, LinkedList<>
๋ฐ๋ผ์ ๊ฒ์์ฉ์ผ๋ก๋ ArrayList๋ฅผ, ์ฝ์
/์ญ์ ์ฉ์ผ๋ก๋ LinkedList๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข๋ค.
์ข์ ์ ๋ณด ๊ฐ์ฌํฉ๋๋ค ^___^