๐ก 1. Array(๋ฐฐ์ด), Array VS ArrayList
1. ๋ฐฐ์ด : ๋ฐฐ์ด์ ์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
2.ํฌ๊ธฐ : ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ๊ณ ์ ๊ธธ์ด์ด๋ฏ๋ก, ์ถ๊ฐ์ ์ผ๋ก ๋๋ฆด ์ ์๋ค. Array
๋ ์ด๊ธฐํ ์ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋น๋๊ฒ ๋๋ค.
3. ์ฅ์ : ๋ฐ์ดํฐ์ ์์๊ฐ ์๊ธฐ ๋๋ฌธ์, 0๋ถํฐ ์์ํ๋ index
๊ฐ ์กด์ฌํ๋ฉฐ, ์ด index
๋ฅผ ํ์ฉํด ํน์ ์์์ ๋ํด ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ฉฐ ์กฐ์์ด ๊ฐ๋ฅํ ๊ฒ์ด ์ฅ์ ์ด๋ค.
4. ๋จ์ : ๋ฐ์ดํฐ์ ์ฝ์
์ด๋ ์ญ์ ๊ฐ ์ค๊ฐ์์ ์ด๋ค์ง๋ ๊ฒฝ์ฐ, ๊ทธ ๋ค์ ๋ชจ๋ ์์๋ฅผ ํ ์นธ ์ ๋น๊ธฐ๊ฑฐ๋, ๋ฐ์ด์ค์ผ ํ๋ ์์๊ฐ ์์ผ๋ฏ๋ก ์๋์ ๋น์ฉ์ด ์๊ตฌ๋๋ค. O(N)
5. ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ : ์์๋ฅผ ๋ณด์ฅํด์ค์ผ ํ๋ ๋ฐ์ดํฐ์ ๋ํด ์ฌ์ฉํ๋ฉด ์ข๋ค. index
๊ฐ ์๋ฏธ๋ฅผ ๋ดํฌํ ์ ์๋ ๋ฐ์ดํฐ์ ๋ํด ์ฌ์ฉํ๋ฉด ์ข๋ค. ์๋ฅผ ๋ค๋ฉด ์ฃผ์ ์ ๋ณด๊ฐ ์๋ค. ์ฃผ์ ์ฐจํธ์ ๋ํ ๋ฐ์ดํฐ๋ ์ค๊ฐ์ ์์๊ฐ ์ถ๊ฐ๋๊ฑฐ๋ ์ญ์ ๋์ง ์๊ณ , ๋ ์ง๋ณ๋ก ์ฃผ์ ๊ฐ๊ฒฉ์ด ์ฐจ๋ก๋๋ก ์ธก์ ๋์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
6. Java์ Array
vs ArrayList
์ฐจ์ด๋ 'ํฌ๊ธฐ'์ ์๋ค. ๊ธฐ์กด์ Array
๋ ๊ณ ์ ๊ธธ์ด๋ก, ํ ๋ฒ ๊ธธ์ด๋ฅผ ํ ๋นํ๋ฉด ๋ ์ด์ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ๋๋ฆด ์ ์๋ค. ๋ง์ฝ ๋ฐ์ดํฐ๋ฅผ ๋ ์ถ๊ฐํ๊ณ ์ถ๋ค๋ฉด, ์์ ์๋ก์ด ๋ฐฐ์ด์ ํ ๋นํด์ ์ฎ๊ฒจ์ฃผ์ด์ผ ํ๋ค๋ ์์๊ฐ ์๋ค.
ํ์ง๋ง ArrayList
๋ ๋ค๋ฅด๋ค. ๋ด๋ถ์ ์ผ๋ก๋ ๋ฐฐ์ด์ ํํ๋ก ๊ตฌํ๋์ด์์ง๋ง, ๊ณ ์ ๊ธธ์ด๊ฐ ์๋ ๊ฐ๋ณ๊ธธ์ด๋ฅผ ์ฑํํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
ArrayList
๋ ๊ฐ์ฒด๋ก, ๋ด๋ถ์ ArrayList
๋ด๋ถ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ๊ฒฐ์ ํ๋ capacity
๋ฉค๋ฒ๋ณ์๊ฐ ์๋ค. ArrayList
์ ์๋ฃ๋ฅผ ๊ณ์ํด์ ์ถ๊ฐํ๋ฉด ์ด capacity
๋ณ์๊ฐ ์๋์ผ๋ก ๋์ด๋๊ฒ ๋๋ค. ์ค์ ๋ capacity
๋ฅผ ๋์ด์ ์๋ก์ด ๋ณ์๊ฐ ๋ค์ด์ค๊ฒ ๋๋ค๋ฉด, ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ 1.5๋ฐฐ ์ฆ๊ฐ์ํค๋ ๋ก์ง์ผ๋ก ๋ด๋ถ๊ฐ ๊ตฌ์ฑ๋์ด ์๋ค.
๊ธฐ๋ณธ์ ์ผ๋ก ๋ด๋ถ๊ฐ ๋ฐฐ์ด๋ก ์ด๋ค์ ธ์์ผ๋ฏ๋ก, ์๋ก์ด ๋ฐฐ์ด์ ํ ๋นํด์ ์ฎ๊ฒจ์ฃผ์ด์ผ ํ๋ค๋ ๊ฒ์ ๋์ผํ๋ค. ํ์ง๋ง ๋ด๋ถ์ ์ผ๋ก, capacity
๋ฅผ ๋์ด์ ๋ค๋ฉด 1.5๋ฐฐ ์ปค์ง ๋ฐฐ์ด์ ์์ฑํ๊ณ , ํด๋น ๋ฐฐ์ด์ copy๋ฅผ ์์ผ์ฃผ๋ ์์
์ ์๋์ผ๋ก ์งํํด์ค๋ค๋ ์ ์์ ๊ต์ฅํ ํธ๋ฆฌํ๋ค.
resize operation
์ด ๋ฐ๋์ด ๋๋ ๋งํผ, ์๊ฐ ๋ณต์ก๋ ์ธก๋ฉด์์ ์ํด๋ฅผ ๋ณผ ์ ์๋ค.
์ถ๊ฐ์ ์ผ๋ก Array
๋ ์์ ์๋ฃํ๊ณผ Object
๋ฅผ ๋ชจ๋ ์ ์ฅํ ์ ์์ผ๋, ArrayList
๋ Object
๋ง ์ ์ฅํ ์ ์๋ค. ๊ธฐ๋ณธํ์ ์ ์ฅํ๋ ๊ฒ์ ๋ถ๊ฐํ๋ฏ๋ก ์ ์ฅ ์ autoboxing
์ ์ํด ์์ ์๋ฃํ์ด ๋ค์ด๊ฐ๋ ๊ฒ์ฒ๋ผ ๋ณด์ธ๋ค.
๐ก 2. LinkedList (์ฐ๊ฒฐ๋ฆฌ์คํธ)
1. ์ฐ๊ฒฐ๋ฆฌ์คํธ : ๊ฐ ๋ ธ๋๊ฐ ๋ฐ์ดํฐ์ ํฌ์ธํฐ๋ฅผ ๊ฐ์ง๊ณ ํ ์ค๋ก ์ฐ๊ฒฐ๋์ด ์๋ ๋ฐฉ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ
2. ํฌ๊ธฐ : ํฌ๊ธฐ๊ฐ ์ ํด์ ธ์์ง ์๋ค.
3. ์ฅ์ : ๊ฐ๊ฐ์ ๋
ธ๋๋ ์๊ธฐ ์์ ๋ค์์ ์ด๋ค ์์๊ฐ ์ ์ฅ๋์ด ์๋์ง ์๊ธฐ ๋๋ฌธ์, ์ฐ๊ฒฐ์ ๋๊ณ ๋ค์ ๋
ธ๋๋ก ์ด์ด์ฃผ๊ธฐ๋ง ํด์ฃผ๋ฉด ์ญ์ ๊ฐ ๊ฐ๋ฅํ๋ค. ์ฝ์
๋ ๋ง์ฐฌ๊ฐ์ง๋ก, ์ค๊ฐ ์ฐ๊ฒฐ์ ๋๊ณ ์๋ก์ด ๋
ธ๋์ ๊ฐ๊ฐ ์ฐ๊ฒฐ๋๋๋ก ์ค์ ํ๋ฉด ์ฝ๊ฒ ์ฝ์
์ฐ์ฐ์ ์คํํ ์ ์๋ค. O(1)
์ ์๊ฐ๋ณต์ก๋๋ก ์ญ์ ์ ์ฝ์
์ฐ์ฐ์ ์งํํ ์ ์๋ค.
4. ๋จ์ : ๋ฐฐ์ด๊ณผ ๋ค๋ฅด๊ฒ index
๊ฐ ์กด์ฌํ์ง ์๋๋ค. ํน์ ๊ฐ์ ์ฐพ๊ธฐ ์ํด์๋ ํด๋น ์ฐ๊ฒฐ๋ฆฌ์คํธ ๋ด๋ถ์ ์์๋ฅผ ๋ชจ๋ ๋ค ๋ค์ ธ์ผ ํ๋ฏ๋ก ๊ฒ์์ ๋ํ ์๊ฐ ๋ณต์ก๋๋ O(N)
์ด ์์๋๋ค.
5. ์ฌ์ฉํ๋ฉด ์ข์ ๊ฒฝ์ฐ : ์ค๊ฐ ๋ฐ์ดํฐ์ ์ฝ์ ์ญ์ ๊ฐ ๋ง์ ๊ฒฝ์ฐ, ์๋ฃ๊ตฌ์กฐ ๋ด๋ถ์ ๋ช ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฝ์ ํ ์ง ๋ชจ๋ฅด๋ ๊ฒฝ์ฐ ๋ฑ์ ํ์ฉํ๋ฉด ์ข๋ค.
๐ ์ถ์ฒ
[๋งํฌ] https://velog.io/@humblechoi/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Array-vs-ArrayList ([์๋ฃ๊ตฌ์กฐ] Array vs ArrayList)
'๐งช ์ปดํจํฐ๊ณผํ : CS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๋ฃ๊ตฌ์กฐ] Priority Queue (์ฐ์ ์์ ํ) ์ธํฐ๋ทฐ ๋๋น (0) | 2022.10.23 |
---|---|
[์๋ฃ๊ตฌ์กฐ] Stack๊ณผ Queue์ ๋น๊ต (์ธํฐ๋ทฐ ๋๋น) (0) | 2022.10.23 |
[๊ฐ๋ฐ๊ณตํต] Call by value์ Call by reference (Java, Python, C/C++) (0) | 2022.10.11 |
[Algorithm] ํ ์ ๋ ฌ (Heap Sort) (0) | 2022.09.03 |
[Alogrithm] ์ฝ์ ์ ๋ ฌ (Injection Sort) (0) | 2022.09.03 |