Array & List
๋ฐฐ์ด(Array)๊ณผ ๋ฆฌ์คํธ(List)๋ ๋งค์ฐ ์ ์ฌํ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ธ์ด๋ง๋ค ๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด๊ณผ ๋ฆฌ์คํธ๋ฅผ ๋ด์ฅํ๋์ง ์ฌ๋ถ์ ๊ทธ ํน์ฑ์ ์ฐจ์ด๊ฐ ์์ด์ ๋์ฑ ๋ชจํธํ๊ฒ ๋ค๋ฃจ์ด์ง๊ณค ํ๋ค.
๋ฐฐ์ด (Array)
๋ฐฐ์ด(Array)์ ์ผ๋ฐ์ ์ผ๋ก ๊ฐ์ ์ข
๋ฅ์ ๋ฐ์ดํฐ๋ค์ด ์์ฐจ์ ์ผ๋ก ์ ์ฅ ๋์ด ์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
โข
์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋์ด ๋
ผ๋ฆฌ์ ์ ์ฅ ์์์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ๊ฐ๊ธฐ ๋๋ฌธ์, ์ธ๋ฑ์ค(Index)๋ฅผ ํตํด์ ๋ฐ์ดํฐ์ ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค.
โข
๋ฐ๋ผ์ Array์์ ์ธ๋ฑ์ค๋ ์ฃผ์์ ์์ํ๋ ์๋ฏธ๋ฅผ ๊ฐ๊ฒ ๋๋ค.
โข
๋ฌผ๋ฆฌ์ ๋ฉ๋ชจ๋ฆฌ์ ์ธ๋ฑ์ค๊ฐ ๊ณ ์ ๋์ด ์์ผ๋ฏ๋ก, ํน์ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๋ฅผ ์ญ์ ํด๋ ์ธ๋ฑ์ค์ ๋น ๊ณต๊ฐ์ด ๋จ๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ์ธก๋ฉด์์ ๋นํจ์จ์ ์ด๋ค.
โข
๊ณ ์ ๋ ํฌ๊ธฐ๋ฅผ ๊ฐ๋๋ค.
โข
์บ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ค๋ฅ ์ด ๋ฎ๋ค
โข
์ฝ์
, ์ญ์ ์ ์๊ฐ๋ณต์ก๋ O(N). ์ฝ์
๊ณผ ์ญ์ ์ ํด๋น ์ธ๋ฑ์ค ์ฃผ๋ณ์ ๊ฐ์ ์ด๋์ํค๋ ๊ณผ์ ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ด๋ค.
โข
์ ๊ทผ ์๊ฐ๋ณต์ก๋ O(1)
๋ฆฌ์คํธ (List)
๋ฆฌ์คํธ(List) ์ญ์ ์์๋ฅผ ๊ฐ๋ ๋ฐ์ดํฐ๋ค์ ์งํฉ์ธ ์ ํ ์๋ฃ๊ตฌ์กฐ๋ก, ์ํ์ค(Sequence)๋ผ๊ณ ๋ ํ๋ค.
โข
๋ฆฌ์คํธ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋น์ฐ์์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ํฌ์ธํฐ๋ก ๋ค์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ๋ฆฌํจ๋ค. ๋ฐ๋ผ์ ๋ญ๋น๋๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ์๋ค.
โข
ํฌ์ธํฐ๋ฅผ ์ ์ฅํ ๊ณต๊ฐ์ด ํ์ํ๊ณ , ๊ทธ๋ ๊ธฐ์ ๋ฐฐ์ด๋ณด๋ค ๊ตฌ์กฐ๊ฐ ๋ณต์กํ๋ค.
โข
๋น์ฐ์์ ์ผ๋ก ์ ์ฅ๋๊ธฐ์ ์ธ๋ฑ์ค๋ก๋ ํด๋น ๋ฐ์ดํฐ์ ๋ฐ๋ก ์ ๊ทผํ ์ ์๋ค. ์ธ๋ฑ์ค๋ ๋จ์ํ ๋ฐ์ดํฐ์ ์์ ์ ๋์ ์๋ฏธ๋ง ๊ฐ๊ฒ ๋๋ค.
โข
ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์์ง ์๋ค.
โข
์บ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ค๋ฅ ์ด ๋ฎ๋ค.
โข
์ฝ์
, ์ญ์ ์ ์๊ฐ๋ณต์ก๋ O(1)
โข
์ ๊ทผ ์๊ฐ๋ณต์ก๋ O(N). ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ์ธ๋ฑ์ค๊ฐ ์์ด Head ํฌ์ธํฐ๋ถํฐ ์์๋๋ก ์ ๊ทผํด์ผ ํ๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ค๋ฅ (Cache Hit Ratio)
์บ์ ๋ฉ๋ชจ๋ฆฌ ๋ CPU์ ๋ฉ๋ชจ๋ฆฌ์ ์๋ ์ฐจ์ด๋ฅผ ์ค์ด๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ณ ์ ๋ฒํผ ๋ฉ๋ชจ๋ฆฌ์ด๋ค. ์์ฃผ ์ฌ์ฉํ๋ ๋ฐ์ดํฐ๋ฅผ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ์ฌ ๋น ๋ฅด๊ฒ ๊บผ๋ด์, ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ ํ์๋ฅผ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํจ๋ค
โ ๋น ๋ฅด๊ณ ๋น์ธ๋ค
CPU๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ ๊ทผํ๊ธฐ ์ ์บ์ ๋ฉ๋ชจ๋ฆฌ์ ํ์ํ ๋ฐ์ดํฐ์ ์กด์ฌ ์ฌ๋ถ๋ฅผ ํ์ธํ๋ค. ๋ฐ์ดํฐ๊ฐ ์๋ ๊ฒฝ์ฐ๋ฅผ ์ ์ค(hit) , ์๋ ๊ฒฝ์ฐ๋ฅผ ์คํจ(miss) ๋ผ๊ณ ํ๋ค.
์ ์ค๋ฅ (Hit Ratio)๋ ์์ฒญํ ๋ฐ์ดํฐ๋ฅผ ์บ์ ๋ฉ๋ชจ๋ฆฌ์์ ์ฐพ์ ํ๋ฅ ์ด๋ค.
์บ์ ๋ฉ๋ชจ๋ฆฌ๋ ์ฐธ์กฐ์ ์ง์ญ์ฑ(Locality)์ ๊ทผ๊ฑฐํ๋ค.
โข
์๊ฐ์ ์ง์ญ์ฑ(temporal Locality) : ํ ๋ฒ ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ฅผ ๋ค์ ์ฐธ์กฐํ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
โข
๊ณต๊ฐ์ ์ง์ญ์ฑ(spatial Locality) : ์ฐธ์กฐํ ๋ฐ์ดํฐ์ ์ธ์ ํ ๋ฐ์ดํฐ๊ฐ ์ฐธ์กฐ๋ ๊ฐ๋ฅ์ฑ์ด ๋๋ค.
โข
์์ฐจ์ ์ง์ญ์ฑ(sequential Locality) : ๋ถ๊ธฐ๊ฐ ๋ฐ์ํ์ง ์๋ ํ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋ ์์๋๋ก ์คํ๋๋ค.
Array๋ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , List๋ ๋น์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅํ๋ค๋ ์ ์์ ๊ณต๊ฐ์ ์ง์ญ์ฑ ์ธก๋ฉด์์ Array์ ์บ์ ๋ฉ๋ชจ๋ฆฌ ์ ์ค๋ฅ ์ด ๋ ๋์ ๊ฒ์ด๋ค.
List (Python)
๋ค๋ฅธ ์ธ์ด์์๋ ๋ฐฐ์ด๊ณผ ๋ฆฌ์คํธ๊ฐ ๋น๊ต์ ๋ช
ํํ๊ฒ ๊ตฌ๋ถ๋์ด ์ฌ์ฉ๋๋ค. ํ์ง๋ง ํ์ด์ฌ์ ๋ฆฌ์คํธ๋ ๋ฐฐ์ด์ ํน์ฑ๋ ํจ๊ป ๋ดํฌํ์ฌ ๊ตฌํ๋์ด ์๋ค. ํ์ด์ฌ์ ๋ฆฌ์คํธ๋ ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ , ์ธ๋ฑ์ค๋ก ์ ๊ทผํ ์ ์๋ค.
Array List (Java)
Java์ java.util ํจํค์ง๋ ํฌ๊ธฐ๊ฐ ์กฐ์ ๊ฐ๋ฅํ Array์ธ ArrayList ํด๋์ค๋ฅผ ์ ๊ณตํ๋ค. ArrayList๋ ์ ์ฅ ๊ฐ๋ฅํ ์ฉ๋(Capacity)์ ํ์ฌ ์ฌ์ฉ์ค์ธ ์ฉ๋(Size)๊ฐ ์๊ณ , ๊ฐ๋ฅํ ์ฉ๋ ์ด์์ ์ฌ์ํ๋ ค๊ณ ํ๋ฉด ๋ ํฐ ๊ณต๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋ก ํ ๋นํ๋ค.