์ด๋ฒ ๊ธ์์๋ ์๋ฃ๊ตฌ์กฐ์ ๊ธฐ๋ณธ ์ค์ ๊ธฐ๋ณธ์ธ ๋ฐฐ์ด์ ๋ํด์ ์ดํด๋ณด๊ณ ์ ํ๋ค.
๋ฐฐ์ด์ ๊ธฐ๋ณธ ๊ฐ๋
๋ฐฐ์ด์ ๋์ผํ ๋ฐ์ดํฐ ํ์ ์ ๊ฐ์ง ์์๋ค์ด ์ฐ์์ ์ผ๋ก ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ ์๋ฃ ๊ตฌ์กฐ์ด๋ค. ๊ฐ ์์(element)์ ๊ฐ(value)์๋ ์ธ๋ฑ์ค(index)๋ฅผ ํตํด ์ ๊ทผํ ์ ์๋ค. ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ ์ผ๋ฐ์ ์ผ๋ก 0๋ถํฐ ์์ํ๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ด์ ์์ ๋ฐฐ์ด์ ํน์ง
๋ฉ๋ชจ๋ฆฌ๋ ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ(ex. RAM-Random Access Memory)์ ๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ(ex. ํ๋๋์คํฌ)์ ๋ ์ข ๋ฅ๊ฐ ์๋ค. ๋นํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ๋ ๋ง๊ทธ๋๋ก ์ปดํจํฐ์ ์ ์์ ๊ป๋ค๊ฐ ๋ค์ ์ผ๋ ์ ์ฅ๋ ์ ๋ณด๊ฐ ๊ทธ๋๋ก ๋จ์์๋ค. ๋ฐ๋ฉด ํ๋ฐ์ฑ ๋ฉ๋ชจ๋ฆฌ๋ ์ปดํจํฐ์ ์ ์์ ๊ป๋ค ํค๋ฉด ์ ์ฅํ๋ ์ ๋ณด๊ฐ ๋ ์๊ฐ๊ฒ ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์์ฑํ ์ฝ๋๋ฅผ ์คํ์์ผ์ ํ๋ก๊ทธ๋จ์ด ๋์๊ฐ๊ณ , ๋ณ์๊ฐ ์์ฑ๋๋ฉด ๋ณ์๊ฐ ๊ฐ๋ฆฌํค๋ ๊ฐ์ ๋ชจ๋ RAM์ ์ ์ฅ๋๋ค.
์ด๋, RAM์์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด์ค๋ ๊ฒ์ด ํ๋๋์คํฌ์์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ๋ณด๋ค ๋น ๋ฅด๋ค. ๊ทธ ์ด์ ๋ ์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด RAM์ด ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๊ฐ์ง ์ ๋ค๋ก ์ด๋ฃจ์ด์ ธ ์๊ธฐ ๋๋ฌธ์, RAM์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ง ์๋ฉด ๋ฐ๋ก ๊ทธ ์ ์ ์ ์ฅ๋ ๊ฐ์ ์ ์ ์๊ธฐ ๋๋ฌธ์ด๋ค. ์ฆ 5๋ฒ ์ฃผ์์ ๊ฐ์ ์๊ณ ์ถ๋ค๋ฉด ์์ฐจ์ ์ผ๋ก 1๋ฒ 2๋ฒ 3๋ฒ.. ์ด๋ ๊ฒ ์ฐพ์๋๊ฐ๋ ๊ฒ ์๋, ๋ฐ๋ก 5๋ฒ์ "์์ ์ ๊ทผ"ํด์ ๋น ๋ฅด๊ฒ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ด ์ฌ ์ ์๋ค.
์ฐ๋ฆฌ๊ฐ ๋ฐฐ์ด์ ์ ์ธํ ๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์๋ ค์ฃผ๋ฉด, ์ปดํจํฐ๋ ๋ฐฐ์ด์ด ์์๋๋ ์์น์ ๋ฐฐ์ด์ด ์ด๋์ ๋๋๋ ์ง ์ ์ ์๊ฒ๋๋ค. ๋ฐฐ์ด์ ๊ฐ ์์๋ ๋ฉ๋ชจ๋ฆฌ์์ ๊ณ ์ ๋ ํฌ๊ธฐ์ ์ฐ์๋ ๊ณต๊ฐ์ ์ ์ฅ๋๋ฉฐ, ์ปดํจํฐ๋ ๋ฐฐ์ด์ ์์ ์ฃผ์์ ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด ์ํ๋ ์์์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๊ฒ ๋๋ค.
๋ฐฐ์ด์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ฐฉ๋ฒ
1. ์ฝ๊ธฐ (Access)
๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ์๊ณ ์์ผ๋ฉด ํด๋น ์์์ ์์ ์๊ฐ์ ์ ๊ทผํ ์ ์๋ค. ์ฆ ๋ฐฐ์ด์ ๋ช๋ฒ์งธ์ ์์นํ ๊ฐ์ ์๊ณ ์ถ๋ค๋ฉด ์ด๋๋ ์์ ์๊ฐ์ ํด๋น ๊ฐ์ ์ ๊ทผํ ์ ์๋ ๊ฒ์ด๋ค.
์๊ฐ๋ณต์ก๋: O(1)
2. ๊ฒ์ (Search)
์ ๋ ฌ๋ ๋ฐฐ์ด์์ ์ด์ง ํ์์ ์ฌ์ฉํ๋ฉด O(log n) ์๊ฐ์ ๊ฒ์ํ ์ ์์ง๋ง, ์ผ๋ฐ์ ์ผ๋ก๋ ์์ฐจ ํ์์ด ์ฌ์ฉ๋๋ฏ๋ก O(n)์ด ๋๋ค.
์๊ฐ๋ณต์ก๋: O(n)
3. ์ฝ์ (Insertion)
๋ฐฐ์ด์ ๋์ ์์๋ฅผ ์ถ๊ฐํ๋ ๊ฒ์ O(1)์ด์ง๋ง, ํน์ ์์น์ ์ฝ์ ํ ๋๋ ๊ทธ ์์น ์ดํ์ ๋ชจ๋ ์์๋ฅผ ์ด๋ํด์ผํ๋ฏ๋ก O(n)์ ์๊ฐ์ด ๊ฑธ๋ฆฐ๋ค.
์๊ฐ๋ณต์ก๋: O(n) (ํน์ ์์น์ ์ฝ์ ํ ๋), O(1) (๋์ ์ฝ์ ํ ๋)
4. ์ญ์ (Deletion)
๋ฐฐ์ด์์ ํน์ ์์๋ฅผ ์ญ์ ํ ๋, ์ญ์ ํ ์์น ์ดํ์ ๋ชจ๋ ์์๋ฅผ ์ด๋์์ผ์ผ ํ๋ฏ๋ก O(n) ์๊ฐ์ด ์์๋๋ค.
์๊ฐ๋ณต์ก๋: O(n)
๋ฐฐ์ด์ ์ฅ์ ๊ณผ ๋จ์
์ฅ์
- ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํด์ ํฌ๊ธฐ๊ฐ ์๋ฌด๋ฆฌ ํฐ ๋ฐฐ์ด์ด๋ผ๋ ๋ชจ๋ ์์์ ๋น ๋ฅด๊ฒ ์ ๊ทผํ ์ ์๋ค.
- ํฌ์ธํฐ ๋ฑ๊ณผ ๊ฐ์ ๋ถ๊ฐ ์ ๋ณด ์์ด ๋ฐ์ดํฐ๋ง ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ํจ์จ์ ์ธ ๊ณต๊ฐ ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค.
- ๊ตฌ์กฐ๊ฐ ๊ฐ๋จํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ๋ค.
๋จ์
- ๋ฐฐ์ด์ ์ ์ธํ ํ ํ ๋น๋ ์ ์ ๋ฉ๋ชจ๋ฆฌ ๋๋ฌธ์ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
- ๋ฐฐ์ด์ ํน์ ์์น์ ์์๋ฅผ ์ฝ์
ํน์ ์ญ์ ํ๋ ๋ฐ์ ๋น์ฉ์ด ๋ง์ด ๋ ๋ค.
- ๋ฐฐ์ด์ ํญ์ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์์ฐจ์ ์ผ๋ก ์ด์ด์ ธ ์์ด์ผํ๊ธฐ ๋๋ฌธ์ ์์๋ค์ ์ด๋์ด ํ์ํ๋ค.
- ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ๋ฏธ๋ฆฌ ์ ํด์ง๊ธฐ ๋๋ฌธ์ ์ฝ์
๊ณผ ์ญ์ ๊ฐ ๋์ ์ผ๋ก ๋ฐ์ํ๋ ์ํฉ์์ ์ ์ ํ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ๊ฒฐ์ ํ๋ ๊ฒ์ด ์ด๋ ต๋ค.
- ์ด ๋๋ฌธ์ ์ค๋ฒํ๋ก์ฐ ํน์ ์ ์ฅ๊ณต๊ฐ์ ๋ญ๋น๋ฅผ ์ด๋ํ ์ ์๋ค.
์์ ๊ฐ์ ์ฅ๋จ์ ์ผ๋ก ์ธํด ๋ฐฐ์ด์ ์๋์ ๊ฐ์ ๊ฒฝ์ฐ์ ์ฌ์ฉํ๊ธฐ ์ ํฉํ๋ค.
- ์์ฐจ์ ์ธ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ฉฐ ๊ฐ๋ณด๋ค ์์๊ฐ ์ค์ํ ๊ฒฝ์ฐ
- ๋ค์ฐจ์ ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ๋, ํน์ ์์น์ ์์๋ฅผ ๋น ๋ฅด๊ฒ ์ฝ์ด์ผํ๋ ๊ฒฝ์ฐ
- ๋ฐ์ดํฐ์ ํฌ๊ธฐ๊ฐ ์์ฃผ ๋ณ๊ฒฝ๋์ง ์๋ ๊ฒฝ์ฐ
- ์์์ ์ถ๊ฐ, ์ญ์ ๊ฐ ๋น๋ฒํ์ง ์๋ ๊ฒฝ์ฐ
์ ์ ๋ฐฐ์ด๊ณผ ๋์ ๋ฐฐ์ด
์์์ ์ค๋ช ํ ๋ด์ฉ์ ๋๋ถ๋ถ์ ์ ์ ๋ฐฐ์ด์ ํด๋น๋๋ ๋ด์ฉ์ด๋ค. ํ์ง๋ง ๋ง์ ์ฌ๋๋ค์ด ์ฌ์ฉํ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด ์ค ํ๋์ธ ํ์ด์ฌ์์ ์ฌ์ฉํ๋ ๋ฆฌ์คํธ๋ ๋์ ๋ฐฐ์ด์ ํน์ง์ ๊ฐ๋๋ค. ์ ์ ๋ฐฐ์ด๊ณผ ๋์ ๋ฐฐ์ด์ ํน์ง๊ณผ ์ฐจ์ด์ ์ ์์๋ณด์.
์ ์ ๋ฐฐ์ด์ ์ด๋๊น์ง ์ค๋ช ํ๋ ๋ด์ฉ๊ณผ ๊ฐ์ด ๊ณ ์ ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๋ ๋ฐฐ์ด๋ก, ์ปดํ์ผ ์์ ์ ๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ค. ๋ฐฐ์ด์ ์์ฑํ ๋ ํฌ๊ธฐ๋ฅผ ๋ช ์ํด์ผํ๋ฉฐ, ์์ฑ๋ ํ์๋ ๊ทธ ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
๋ฐ๋ฉด ๋์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ ๋์ ์ผ๋ก ์กฐ์ ํ ์ ์๋ ๋ฐฐ์ด์ด๋ค. ๋ฐ๋ผ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์ง์ ํ ํ์๊ฐ ์์ผ๋ฉฐ, ๋ฐ์ดํฐ๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์๋์ผ๋ก ๋์ด๋๋ค.
๋์ ๋ฐฐ์ด์ ์ฒ์์๋ ์์ ํฌ๊ธฐ์ ๋ฐฐ์ด๋ก ์์ํ๊ณ , ๊ณต๊ฐ์ด ๋ถ์กฑํ๋ฉด ์๋์ผ๋ก ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ ์ฆ๊ฐํ๋ค. ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐจ๋ฉด, ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณต์ฌํ๊ณ ๋ ํฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๋ค. ๋๋ฌธ์ ์ถ๊ฐ์ ์ธ ์ค๋ฒํค๋๊ฐ ๋ฐ์ํ ์ ์๋ค.
์ค๋ฒํค๋(Overhead)๋?
์์คํ ์ด ํน์ ์์ ์ ์ํํ๊ธฐ ์ํด ํ์ํ ์ถ๊ฐ์ ์ธ ์์์ด๋ ๋น์ฉ. ์ฆ, ์ค์ ๋ก ํ๊ณ ์ ํ๋ ์ผ ์ธ์ ๋ถ๊ฐ์ ์ผ๋ก ๋ฐ์ํ๋ ์์ ์ด๋ ๋ถํ๋ฅผ ์๋ฏธํ๋ค.
๋์ ๋ฐฐ์ด์์๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ํ์ฅํ ๋, ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ถ์กฑํด์ง๋ฉด ์๋ก์ด ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ ๋นํ๊ณ ๊ธฐ์กด ๋ฐฐ์ด์ ๋ชจ๋ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ๊ณผ์ ์ด ๋ฐ์ํ๋ค. ์ด๋ ๋ณต์ฌํ๋ ์์ ์์ฒด๊ฐ ์ค๋ฒํค๋์ด๊ณ , ์ฑ๋ฅ์ ์ํฅ์ ๋ฏธ์น๊ฒ ๋๋ค.
์ ์ ๋ฐฐ์ด vs ๋์ ๋ฐฐ์ด
์ ์ ๋ฐฐ์ด(Static Array) | ๋์ ๋ฐฐ์ด(Dynamic Array) | |
ํฌ๊ธฐ | ๊ณ ์ | ๋์ ์ผ๋ก ์กฐ์ |
๋ฉ๋ชจ๋ฆฌ ํ ๋น ์์ | ์ปดํ์ผ ์์ | ๋ฐํ์ ์์ |
๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์ | ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๋ธ๋ก | ์ด๊ธฐ์๋ ์ฐ์์ , ํฌ๊ธฐ ์กฐ์ ์ ๋ณต์ฌ |
๋ฉ๋ชจ๋ฆฌ ๋ญ๋น | ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ๋ฐ์ ๊ฐ๋ฅ | ํฌ๊ธฐ๋ฅผ ์กฐ์ ํ์ฌ ์ต์ |
์ฐ์ฐ ์ค๋ฒํค๋ | ๊ฑฐ์ ๋ฐ์ํ์ง ์์ | ํฌ๊ธฐ ์กฐ์ ๊ณผ์ ์์ ๋ฐ์ ๊ฐ๋ฅ |
์ฐธ๊ณ
https://youtu.be/NFETSCJON2M?feature=shared
https://chanos.tistory.com/entry/์๋ฃ๊ตฌ์กฐ-์์ฐจ์ -์๋ฃ๊ตฌ์กฐ-๋ฐฐ์ด๊ณผ-๋ฆฌ์คํธ์-์ดํด
https://yoongrammer.tistory.com/43
https://ongveloper.tistory.com/403