๐ Array
Array๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ stack ์์ญ์ ์ ์ฅ๋๋ค.
Array๋ ๋ ผ๋ฆฌ์ ์ ์ฅ ์์์ ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์๊ฐ ์ผ์นํ๋๋ฐ, ์ด ๋ง์ ๋ฐฐ์ด์ ์์๊ฐ ๋ฉ๋ชจ๋ฆฌ์ ์ค๊ตฌ๋๋ฐฉ์ผ๋ก ์ ์ฅ๋๋ ๊ฒ ์๋๋ผ ์ฐ์์ ์ผ๋ก ์ ์ฅ๋๋ค๋ ๋ป์ด๋ค. ๋ฐ๋ผ์ ์ฒ์ ์ ์ฅ๋ ์์น๋ง ์๋ฉด ์ธ๋ฑ์ค๋ฅผ ํตํด O(1)์ ์๊ฐ์ผ๋ก ๋๋จธ์ง ์์์ ์ ๊ทผํ๋ ๊ฒ์ด ๊ฐ๋ฅํด์ง๋ค.
์ธ๋ฑ์ค๋ฅผ ํตํ ์ ๊ทผ์ด ๊ฐ๋ฅํ๋ค๋ ๊ฒ์ random access๊ฐ ๊ฐ๋ฅํ๋ค๋ ๋ง๊ณผ ๋์ผํ๋ค.
๐ Array Pros.
1. ๋ ผ๋ฆฌ์ ์ ์ฅ ์์ = ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์(์ ์๊ฐ ์์ด๋ฏ...)
๋ฐ๋ผ์ ์ฐพ๊ณ ์ ํ๋ ์์์ ์ธ๋ฑ์ค ๊ฐ๋ง ์๊ณ ์์ผ๋ฉด O(1)์ ํด๋น ์์์ ์ ๊ทผํ๋ ๊ฒ์ด ๊ฐ๋ฅํ๋ค.
2. ์๋ฃ๋ฅผ ํ๋์ ์ฐ์์ ์ธ ๋ฌถ์์ผ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ์ ๊ทผ์ด ๋น ๋ฅด๋ค.
3. ๋จ์ผํ ์ด๋ฆ์ ์ฌ์ฉํ์ฌ ๋์ผํ ์ ํ์ ์ฌ๋ฌ ๋ฐ์ดํฐ ํญ๋ชฉ์ ํํํ ์ ์๋ค.
๐ Array Cons.
1. ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ปดํ์ผ ์ด์ ์ ํ ๋นํด์ผ ํ๋ค.(์ ์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น)
๋ฐฐ์ด์ ๊ทธ ํฌ๊ธฐ๋ฅผ ์ค๊ฐ์ ์์ ํ ์ ์๋ค. ์๋ํ๋ฉด ๋ฐฐ์ด์ ํ์ฅํ๊ธฐ ์ํด์๋ ๋ค์ ๋ฉ๋ชจ๋ฆฌ ์์น๋ฅผ ๋ด๊ฐ ์ฌ์ฉํด์ผ ๋๋๋ฐ, ์ด๊ฒ ์ด๋ฏธ ์ฌ์ฉ๋๊ณ ์๋ ์ฃผ์์ธ์ง ๋น์ด์๋ ์ฃผ์์ธ์ง ํ์ ํ ์ ์๊ณ ์ค์๋ก ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ๋ฎ์ด์ธ ์ํ์ด ์๊ธฐ ๋๋ฌธ์ ๋ฐํ์์ ํฌ๊ธฐ๋ฅผ ์์ ํ ์ ์๋ ๊ฒ์ด๋ค.
๋ฐ๋ผ์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์๋ชป ์์ธกํ ๊ฒฝ์ฐ ์ ์ฅ ๊ณต๊ฐ์ด ๋ถ์กฑํ๊ฑฐ๋ ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๋ ์ผ์ด ๋ฐ์ํ๋ค.
2. ์์ ์ฝ์ ์ ์ต์ ์ ๊ฒฝ์ฐ O(n)
๋ง์ฝ ์ฒซ๋ฒ์งธ ์๋ฆฌ์ ์๋ก์ด ์์๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋ชจ๋ ์์๋ค์ ์ธ๋ฑ์ค๋ฅผ 1์ฉ shift ํด์ค์ผ ํ๋ค. ์ด ๊ณผ์ ์์ O(n)๋งํผ์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฐ์ํ๋ค.
3. ์์ ์ญ์ ์ ์ต์ ์ ๊ฒฝ์ฐ O(n)
์์๋ฅผ ์ญ์ ํ ๋๋ ๋ง์ฐฌ๊ฐ์ง๋ก ์ต์ ์ ๊ฒฝ์ฐ O(n)์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฐ์ํ๋ค.
๋ฐฐ์ด์ ํน์ ์์๋ฅผ ์ญ์ ํ๋ ค๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ์ฐ์์ ์ธ ํน์ฑ์ด ๊นจ์ง๋ฉด์ ๋น ๊ณต๊ฐ์ด ๋ฐ์ํ๋ค.
์ด๋ ์ญ์ ํ ์์๋ณด๋ค ํฐ ์ธ๋ฑ์ค๋ฅผ ๊ฐ๋ ์์๋ค์ shiftํด์ค์ผ ํ๋ ๋น์ฉ์ด ๋ฐ์ํ๊ณ , ๋ง์ฝ ์ฒซ ๋ฒ์งธ ์์๋ฅผ ์ญ์ ํ๊ณ ์ ํ๋ ๊ฒฝ์ฐ์๋ค๋ฉด ๋ค์ ์์๋ฅผ ์ ๋ถ ์์ผ๋ก ํ ์นธ์ฉ ์ฎ๊ฒจ์ค์ผ ํ๊ธฐ ๋๋ฌธ์ O(n)๋งํผ์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฐ์ํ๋ค.
โ Linked List
Array์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด ๋ฑ์ฅํ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
Tree ๊ตฌ์กฐ์ ๊ธฐ๋ฐ์ด ๋๋ ์๋ฃ๊ตฌ์กฐ๋ก, ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น ๋ฐฉ์์ด๊ธฐ ๋๋ฌธ์ Heap ์์ญ์ ๋ฉ๋ชจ๋ฆฌ๊ฑฐ ํ ๋น๋๋ค.
"linked"๋ผ๋ ๋จ์ด ๋ป ๊ทธ๋๋ก, ์๋ฃ๋ค์ด ํฌ์ธํฐ๋ผ๋ ๊ฐ๋ ์ผ๋ก ์๋ก ์ฐ๊ฒฐ๋์ด์๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
๋ด๊ฐ ์ถ๊ฐํ ์๋ฃ๊ฐ ์๊ธฐ๋ฉด ๋ง์ง๋ง ์๋ฃ์ ๋งํฌ๋ก ๋๋ฅผ ์ฐ๊ฒฐ์ํค๊ธฐ๋ง ํ๋ฉด ๋๋ค.
๐ Linked List Pros.
1. ์์๋ฅผ ํ๋ก๊ทธ๋จ ์คํ ์ค์ ๋์ ์ผ๋ก ์์ฑํ๊ฑฐ๋ ์ญ์ ํ ์ ์๋ค.
๋ฐ๋ผ์ ๋ฐฐ์ด์ฒ๋ผ ๋ฆฌ์คํธ์ ํฌ๊ธฐ๋ฅผ ๋ฏธ๋ฆฌ ์์ธกํ ํ์๊ฐ ์์ด์ง๋ค.
2. ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ์ฝ๋ค.
๐ Linked List Cons.
1. ๊ฒ์, ์ฝ์ , ์ญ์ ๋ชจ๋ ์ต์ ์ ๊ฒฝ์ฐ O(n)
๋ฐฐ์ด์์๋ ์ฝ์ ๊ณผ ์ญ์ ๊ณผ์ ์์๋ง ์ต์ ์ ๊ฒฝ์ฐ O(n)์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฐ์ํ์ง๋ง LinkedList๋ ๊ฒ์์๋ ์ต์ ์ ๊ฒฝ์ฐ O(n)์ด ๋ฐ์ํ ์ ์๋ค.
์ฝ์ ๊ณผ ์ญ์ ์์ฒด๋ O(1)์ ์๊ฐ๋ณต์ก๋๋ง ๋ฐ์ํ์ง๋ง, linked list์๋ ์ธ๋ฑ์ค๋ผ๋ ๊ฐ๋ ์ด ์๊ธฐ ๋๋ฌธ์ ๋ด๊ฐ ์ฝ์ ํ ์์น๋ฅผ ์ฐพ์ ๋๊น์ง, ์ญ์ ํ ์์๋ฅผ ์ฐพ์ ๋๊น์ง ๋ฆฌ์คํธ์ ์ฒ์๋ถํฐ ํ์ํด๋ด์ผ ๋๊ธฐ ๋๋ฌธ์ด๋ค.
2. ๋ ผ๋ฆฌ์ ์ ์ฅ ์์ != ๋ฌผ๋ฆฌ์ ์ ์ฅ ์์
Linked List๊ฐ ์์ ๊ฒ์์ ์์ด์ ์ต์ ์ ๊ฒฝ์ฐ O(n)์ ์๊ฐ ๋ณต์ก๋๊ฐ ๋ฐ์ํ๋ ์ด์ ์ด๋ค.
๋ฐฐ์ด์์๋ ๋ค์ ์์๊ฐ ๋ฉ๋ชจ๋ฆฌ ์์์ ๋ฌด์กฐ๊ฑด ๋ด ์์ ์๋ค๋ ๊ฒ์ด ์๋ช ํ์ง๋ง, linked list์ ๊ฒฝ์ฐ ๋ถ์ฐ๋์ด์๋ ์๋ฃ๋ค์ ๋์ผ๋ก ์ฐ๊ฒฐ๋ง ์์ผ๋์ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ๊ท์น์ ์ด์ง ์๋ค. ์ผ๋จ ์๋ฌด ๋ฐ๋ ์๋ฃ๋ฅผ ์์ฑํด๋๊ณ ํฌ์ธํฐ๋ก ์ฐ๊ฒฐํ๋ ์์ด๋ค.
3. ํฌ์ธํฐ๋ฅผ ์ํ ์ถ๊ฐ ๊ณต๊ฐ์ด ํ์ํ๋ค.
๋ฐฐ์ด์ ํด๋น ์นธ์ ์์๋ง ์ ์ฅํ๋ฉด ๋์ง๋ง, linked list์ ๊ฒฝ์ฐ ๋ค์ ์์์ ์์น๋ฅผ ์ ์ฅํ๊ณ ์์ด์ผ ํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ์ํ ์ถ๊ฐ ๊ณต๊ฐ์ด ํ์ํ๋ค.
4. ์ข ์์ ์ธ ๊ด๊ณ
Linked List๋ ํ ๋ ธ๋๊ฐ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ ธ๋ ๊ฐ์ ์ข ์์ ์ธ ๊ด๊ณ๊ฐ ํ์ฑ๋๋ค.
๋ฐ๋ผ์ ํน์ ๋ ธ๋๊ฐ ์์ค๋ ๊ฒฝ์ฐ ์ด ๋ ธ๋๊ฐ ๊ฐ๋ฆฌํค๊ณ ์๋ ๋ค์ ๋ ธ๋๋ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅํด์ง๋ค๋ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ค.
โก๏ธ ํ๋์ ๋น๊ตํ๋ Array vs Linked List
Array | Linked List |
์๋ฃ๊ฐ ์ฐ์์ ์ผ๋ก ์ ์ฅ๋จ | ์๋ฃ๊ฐ ์ฐ์์ ์ผ๋ก ์ ์ฅ๋์ง ์์ |
๊ณ ์ ๋ ํฌ๊ธฐ | ๋์ ์ธ ํฌ๊ธฐ |
๋ฉ๋ชจ๋ฆฌ๊ฐ ์ปดํ์ผ ํ์์ ํ ๋น๋จ | ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฐํ์์ ํ ๋น๋จ |
์ ์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ(Data๋ง ์ ์ฅ) | ๋ง์ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ(Data, ๋ค์ ๋ ธ๋ ์ฃผ์) |
์์ ์ ๊ทผ ์ฌ์(์ธ๋ฑ์ค) | ์์๋ฅผ ์ฒ์๋ถํฐ ๋ค ํ์ํด๋ด์ผ ํจ |
์ฝ์ , ์ญ์ O(n) | ์ฝ์ , ์ญ์ O(1) |
๐ก Array๋ฅผ ๊ธฐ๋ฐ์ผ๋ก Linked List ๊ตฌํํ๊ธฐ
๋ฉ๋ชจ๋ฆฌ๋ฅผ ๋์ ์ผ๋ก ํ ๋น๋ฐ์ ์ ์๋ ๊ฒฝ์ฐ Array์ ๊ธฐ๋ฐ์ผ๋ก Linked List๋ฅผ ๊ตฌํํด์ผ๋๋๋ฐ ์ด๋ป๊ฒ ํ๋ฉด ๋ ๊น?
์๊ฐ๋ณด๋ค ๊ฐ๋จํ๋ค.
Linke List์ ๊ตฌ์กฐ๊ฐ Array์ ๋ค๋ฅธ ์ ์ ๋ค์ ๋ ธ๋๋ฅผ ๊ฐ๋ฆฌํค๊ณ ์๋ ํฌ์ธํฐ๊ฐ ์๋ค๋ ๊ฒ์ด๋ค.
๊ทธ๋์ ๊ฐ๋ง ์ ์ฅํ๊ณ ์๋ ๋ฐฐ์ด์ ๋ค์ ๋ ธ๋์ ์์น ์ ๋ณด๋ง ์ถ๊ฐ๋ก ์ ์ฅํด์ฃผ๋ฉด ๋๋ค.
์ฆ, 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์ด์ [i][0] = ์์, [i][1] = ํฌ์ธํฐ ์ด๋ฐ ์์ผ๋ก ์ ์ฅํ๋ฉด ๋๋ค.
[0] -> {"a",1}
[1] -> {"b",2}
[2] -> {"c",4}
[3] -> {"1",5}
[4] -> {"d",7}
[5] -> {"2",6}
[6] -> {"3",8}
[7] -> {"e",-1}
[8] -> {"4",-1}
์์ ๊ฐ์ด 2์ฐจ์ ๋ฐฐ์ด์ ๋ง๋ค์๋ค๋ฉด
"a" -> "b" -> "c" -> "d" -> "e"
"1" -> "2" -> "3" -> "4"
์ด๋ ๊ฒ 2๊ฐ์ Linked List๊ฐ ๊ตฌํ๋๋ค.
๐ References
geeksforgeeks.org/introduction-to-arrays
geeksforgeeks.org/data-structures/linked-list
geeksforgeeks.org/linked-list-vs-array
stackoverflow.com/questions/7665607/how-do-you-implement-a-linked-list-within-an-array
'CS > ์๋ฃ๊ตฌ์กฐ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Hash Table (0) | 2022.09.30 |
---|---|
Red-Black Tree(RBT) (0) | 2022.09.30 |
Heap(Max Heap, Min Heap) (0) | 2022.09.29 |
Tree(Binary Tree, ํฌํ ์ด์ง ํธ๋ฆฌ, ์์ ์ด์ง ํธ๋ฆฌ, BST) (0) | 2022.09.25 |
Stack & Queue (0) | 2022.09.25 |