Array (๋ฐฐ์ด)
ํน์ง
- ๊ฐ์ ํ์ ์ ์ฌ๋ฌ ๋ณ์๋ฅผ ํ๋์ ๋ฌถ์์ผ๋ก ๋ค๋ฃจ๋ ์๋ฃ๊ตฌ์กฐ
- ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋๋ฉฐ ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์๋ค.
์๊ฐ ๋ณต์ก๋
์ ๊ทผ(Access)
- ๋ฐฐ์ด์ ๋ฌด์์ ์ ๊ทผ(random access)์ด ๊ฐ๋ฅํ๋ค.
- ์ธ๋ฑ์ค๋ฅผ ์๊ณ ์๋ ๊ฒฝ์ฐ O(1)
๊ฒ์(Search): ์์ฐจ ์ ๊ทผ์ด๋ผ๊ณ ๋ ํจ
- ์ ํ ๊ฒ์(Linear Search): ์ ๋ ฌ๋์ด ์์ง ์์ ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ๋ก O(n)
- ์ด์ง ๊ฒ์(Binary Search): ์ ๋ ฌ๋ ๋ฐฐ์ด์์ ํน์ ๊ฐ์ ์ฐพ๋ ๊ฒฝ์ฐ๋ก O(log n)
์ฝ์ (Insertion)
- ๋ฐฐ์ด์ ์์์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ, ์ดํ ์์๋ค์ ๋ชจ๋ ํ ์นธ์ฉ ๋ค๋ก ์ด๋์์ผ์ผ ํ๋ฏ๋ก O(n)
- ๋ฐฐ์ด์ ์ค๊ฐ์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ, ์ดํ ์์๋ค์ ๋ชจ๋ ํ ์นธ์ฉ ๋ค๋ก ์ด๋์์ผ์ผ ํ๋ฏ๋ก O(n)
- ๋ฐฐ์ด์ ๋์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ, ์ถ๊ฐ์ ์ธ ์์ ์ด๋์ ํ์๋ก ํ์ง ์๊ธฐ ๋๋ฌธ์ O(1)
- ๋์ ๋ฐฐ์ด์ ๊ฒฝ์ฐ, ๋ฐฐ์ด์ด ๊ฐ๋์ฐฌ ์ํ์์ ์์๊ฐ ์ถ๊ฐ๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ๋ ๋ฐฐ๋ก ๋๋ฆฌ๊ณ ๊ธฐ์กด ์์๋ค์ ๋ณต์ฌํด์ผ ํ๋ฏ๋ก O(n)
์ญ์ (Deletion)
- ๋ฐฐ์ด์ ์์ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ์ดํ ์์๋ค์ ๋ชจ๋ ํ ์นธ์ฉ ์์ผ๋ก ์ด๋์์ผ์ผ ํ๋ฏ๋ก O(n)
- ๋ฐฐ์ด์ ์ค๊ฐ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ์ดํ ์์๋ค์ ๋ชจ๋ ํ ์นธ์ฉ ์์ผ๋ก ์ด๋์์ผ์ผ ํ๋ฏ๋ก O(n)
- ๋ฐฐ์ด์ ๋ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ์ถ๊ฐ์ ์ธ ์์ ์ด๋์ ํ์๋ก ํ์ง ์๊ธฐ ๋๋ฌธ์ O(1)
LinkedList (์ฐ๊ฒฐ๋ฆฌ์คํธ)
ํน์ง
- Array์ ๋น๊ตํ์ ๋ ์ฝ์ /์ญ์ ์ฐ์ฐ์ ํจ์จ์ ์ธ ์๋ฃ๊ตฌ์กฐ
- Array๊ฐ ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์์ ์ธ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค๋ฉด, LinkedList๋ ๋น์ฐ์์ ์ธ ๊ณต๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๊ณ ๊ทธ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ก ์ฐ๊ฒฐํด์ ๊ด๋ฆฌํ๋ค.
- ์๋ก์ด ์์๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ๋์ ์ผ๋ก ๊ณต๊ฐ์ ํ ๋น๋ฐ์ ๋น์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ถ๊ฐํ๋ค.
- ๋ฐ์ดํฐ์ ์ ์ฅ ๋จ์์ธ ๋ ธ๋๋ก ๊ตฌ์ฑ๋์ด ์๊ณ ๊ฐ๊ฐ์ ๋ ธ๋๋ "๊ฐ"๊ณผ "ํฌ์ธํฐ"(๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ์ฃผ์)๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
- "๊ฐ"์ ์ ์/์ค์์ ๊ฐ์ ๊ธฐ์ด ํ์ ์ด๋ ํด๋์ค์ ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค.
์๊ฐ ๋ณต์ก๋
์ ๊ทผ(Access)
- ํน์ ์ธ๋ฑ์ค์ ์์นํ ์์์ ์ ๊ทผํ๋ ๊ฒฝ์ฐ, ์ฒ์๋ถํฐ ์ํํ์ฌ ํด๋น ์์น๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก O(n)
๊ฒ์(Search)
- ํน์ ๊ฐ์ ๋ ธ๋๋ฅผ ์ฐพ๋ ๊ฒฝ์ฐ, ์ฒ์๋ถํฐ ์ํํ์ฌ ํน์ ๊ฐ์ ๊ฐ๋ ๋ ธ๋๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก O(n)
์ฝ์ (Insertion)
- ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์์์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ, head ๋ ธ๋์ ํฌ์ธํฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก O(1)
- ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ค๊ฐ์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ, ์ฒ์๋ถํฐ ์ํํ์ฌ ์ฝ์ ํ ์์น์ ์ด์ ๋ ธ๋๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก O(n)
- ๋จ, ์ฝ์ ์์ ์์ฒด๋ ํด๋น ๋ ธ๋์ ํฌ์ธํฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก O(1)
- ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋์ ์์๋ฅผ ์ฝ์ ํ๋ ๊ฒฝ์ฐ, ์ฒ์๋ถํฐ ์ํํ์ฌ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก O(n)
- ์ด ๋, ์๊ฐ๋ณต์ก๋๋ฅผ O(n) -> O(1)์ผ๋ก ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ? tail ํฌ์ธํฐ๋ฅผ ๋์ด ๋ง์ง๋ง ๋ ธ๋์ ์ฃผ์๋ฅผ ๊ธฐ์ตํ๋ค.
์ญ์ (Deletion)
- ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์์ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, head ๋ ธ๋์ ํฌ์ธํฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก O(1)
- ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ์ค๊ฐ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ์ฒ์๋ถํฐ ์ํํ์ฌ ์ญ์ ํ ์์น์ ์ด์ ๋ ธ๋๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก O(n)
- ๋จ, ์ญ์ ์์ ์์ฒด๋ ํด๋น ๋ ธ๋์ ํฌ์ธํฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก O(1)
- ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ ์์๋ฅผ ์ญ์ ํ๋ ๊ฒฝ์ฐ, ์ฒ์๋ถํฐ ์ํํ์ฌ ๋ง์ง๋ง ๋ ธ๋๋ฅผ ์ฐพ์์ผ ํ๋ฏ๋ก O(n)
- ๋จ, ์ญ์ ์์ ์์ฒด๋ ํด๋น ๋ ธ๋์ ํฌ์ธํฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก O(1)
Array vs LinkedList
Array
- ๋น ๋ฅธ ์ ๊ทผ: ๋ฌด์์ ์ ๊ทผ(random access)์ด ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ์ฌ O(1)์ ์๊ฐ๋ณต์ก๋๋ก ์์์ ์ง์ ์ ๊ทผํ ์ ์๋ค.
- ๋๋ฆฐ ์ฝ์ ๋ฐ ์ญ์ : ์ฝ์ /์ญ์ ์ ๋ฐ์ดํฐ๋ฅผ ํ ์นธ์ฉ ๋ค/์์ผ๋ก ์ด๋ํด์ผ ํ๊ธฐ ๋๋ฌธ์ ๋นํจ์ธ์ ์ด๋ค.
- ํฌ๊ธฐ ๊ณ ์ : ๋ฐฐ์ด ์์ฑ ์์ ํฌ๊ธฐ๊ฐ ๊ฒฐ์ ๋๋ฉฐ ๋ณ๊ฒฝํ๊ธฐ ์ด๋ ต๋ค. ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ๋ ค๋ฉด ์ ๋ฐฐ์ด์ ํ ๋นํ๊ณ ๊ธฐ์กด ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํด์ผ ํ๋ค.
- ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํ์: ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํ๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ ์ ์ฝ์ด ์กด์ฌํ๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ํจ์จ์ฑ: ๊ฐ ์์๋ ๋์ผํ ํฌ๊ธฐ๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ถ๊ฐ ๋ฉ๋ชจ๋ฆฌ ์ค๋ฒํค๋๊ฐ ์๋ค.
Linked List
- ๋น ๋ฅธ ์ฝ์ ๋ฐ ์ญ์ : ์ฝ์ /์ญ์ ํ ๋ ธ๋๋ฅผ ์ฐพ๋ ๋ฐ๋ O(n)์ด ๊ฑธ๋ฆด ์ ์์ง๋ง, ์ฝ์ /์ญ์ ์์ ์์ฒด๋ ํด๋น ๋ ธ๋์ ํฌ์ธํฐ๋ง ๋ณ๊ฒฝํ๋ฉด ๋๋ฏ๋ก O(1)์ด๋ค.
- ๋๋ฆฐ ์ ๊ทผ: ์์ฐจ ์ ๊ทผ(sequential access)๋ง ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง๋ค.
- ๋์ ํฌ๊ธฐ: ํฌ๊ธฐ๋ฅผ ๋์ ์ผ๋ก ์กฐ์ ๊ฐ๋ฅํ๋ฏ๋ก ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ์ด ํจ์จ์ ์ด๋ค. (๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ญ๋นํ์ง ์๋๋ค.)
- ์ฐ์์ ์ธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋ถํ์: ๋ฌผ๋ฆฌ์ ์ผ๋ก ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ํ์ํ์ง ์๊ธฐ ๋๋ฌธ์ ๊ณต๊ฐ์ ์ ์ฝ์ด ์๋ค.
- ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ๋นํจ์จ์ฑ: ๊ฐ ๋ ธ๋๋ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ฅผ ์ ์ฅํด์ผ ํ๋ฏ๋ก ์ถ๊ฐ์ ์ธ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํ์ํ๋ค.