
์๋ก
ํ๋ก๊ทธ๋๋ฐ์์ ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ๊ด๋ฆฌํ๊ธฐ ์ํด ๋ค์ํ ์๋ฃ๊ตฌ์กฐ๊ฐ ์ฌ์ฉ๋๋ค. ๊ทธ ์ค์์๋ ๋ฐฐ์ด(Array)๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ(Linked List)๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ด๋ฉด์๋ ์์ฃผ ํ์ฉ๋๋ ๊ตฌ์กฐ์ด๋ค. ์ด๋ฒ ํฌ์คํ ์์๋ ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ๋ํด ๋ค๋ค๋ณด๊ณ ์ ํ๋ค.
๋ฐฐ์ด(Array)
- ๊ฐ์ ์๋ฃํ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅํ๋ ์ ์ ์๋ฃ๊ตฌ์กฐ
- index(์ธ๋ฑ์ค)๋ฅผ ์ด์ฉํด ๊ฐ ์์์ ์ ๊ทผ ๊ฐ๋ฅ → ์์ ์ ๊ทผ์ด ๊ฐ๋ฅํ์ฌ ์ ๊ทผ๊ณผ ํ์์ ์ฉ์ด
- ํฌ๊ธฐ๊ฐ ๊ณ ์ ๋์ด ์์ด ์์์ ์ฝ์ ์ด๋ ์ญ์ ๊ฐ ๋นํจ์จ์ → ์์ ํ๋ ๊ฒ์ด ๋ถ๊ฐ๋ฅํ๊ณ , ํด๋น ๋ฐฐ์ด ํฌ๊ธฐ ์ด์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์
> ๋ฐฐ์ด์ ํน์ง
- index๋ฅผ ์ด์ฉํ ๋น ๋ฅธ ์ ๊ทผ ๊ฐ๋ฅ
- ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด ์ฐ์์ ์ผ๋ก ํ ๋น๋จ
- ์ฝ์ /์ญ์ ์ ๋ฐ์ดํฐ ์ด๋ ๋ฐ์
> ์์ ์ฝ๋
int[] arr = new int[5]; // ํฌ๊ธฐ๊ฐ 5์ธ ์ ์ํ ๋ฐฐ์ด ์์ฑ
arr[0] = 10; // 0 ์ธ๋ฑ์ค, ์ฆ ๋ฐฐ์ด์ ์ฒซ๋ฒ์งธ ์์์ 10์ ์ ์ฅ
System.out.println(arr[0]); // ์ถ๋ ฅ: 10
โ ํฌ๊ธฐ๊ฐ 5์ธ ๋ฐฐ์ด์ ์์ฑํจ
→ arr[0] ~ arr[4] ๊น์ง ์ด 5๊ฐ์ ๊ณต๊ฐ์ด ์์ฑ๋จ
โป ๋ฐฐ์ด์ 0๋ถํฐ ์์ํ๋ ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ด๋ฏ๋ก arr[1] ๋ถํฐ ์์ํ์ง ์์
โก ์์ฑ๋ ๋ฐฐ์ด์ ๋ฉ๋ชจ๋ฆฌ ์์ ์ฐ์์ ์ผ๋ก ํ ๋น๋จ
→ arr๋ ์ฒซ ๋ฒ์งธ ์์์ ์ฃผ์๋ฅผ ์ฐธ์กฐํ๊ฒ ๋จ
โข arr[0] = 10; ์ฆ, ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ์นธ์ 10์ด๋ผ๋ ๊ฐ์ ํ ๋นํจ
โฃ arr[0]์ ์ฝ์์ ์ถ๋ ฅํ๋ฉด 10์ ํ ๋นํ๊ธฐ ๋๋ฌธ์ 10์ ๊ฒฐ๊ณผ๊ฐ ๋์ด
์ฐ๊ฒฐ๋ฆฌ์คํธ(Linked List)
- ๊ฐ ์์(Node)๊ฐ ๋ฐ์ดํฐ์ ๋ค์ ๋ ธ๋์ ๋ํ ์ฐธ์กฐ๋ฅผ ๊ฐ์ง๋ ๊ตฌ์กฐ → ์ฐ๊ฒฐ๋์ด ์ด์ด์ง ํํ
- ๋์ ์๋ฃ๊ตฌ์กฐ๋ก ํฌ๊ธฐ๋ฅผ ์ ํ ํ์๊ฐ ์์- ๋ฐฐ์ด์ฒ๋ผ ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ํ ๋น ๋ฐ์ง ์์ → ์ฝ์ ๊ณผ ์ญ์ ๊ฐ ํจ์จ์ - ์์ ์ ๊ทผ์ด ๋ถ๊ฐ๋ฅ → ํน์ ์์์ ์ ๊ทผํ๋ ค๋ฉด ์์์๋ถํฐ ์์ฐจ์ ์ผ๋ก ์ฐพ์์ผ๋จ
> ์ฐ๊ฒฐ๋ฆฌ์คํธ์ ํน์ง
- ๋์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น → ์ ์ฐํ ํฌ๊ธฐ ๋ณ๊ฒฝ ๊ฐ๋ฅ
- ์ฝ์ /์ญ์ ๊ฐ ๋น ๋ฆ
- ์ ๊ทผ ์๋๊ฐ ๋๋ฆผ
> ์์ ์ฝ๋
LinkedList<Integer> list = new LinkedList<>(); //Integer ํ์
์ ์ฐ๊ฒฐ๋ฆฌ์คํธ ์์ฑ
list.add(10); // ๋ฆฌ์คํธ์ 10 ๊ฐ ์ถ๊ฐ
list.add(20); // ๋ฆฌ์คํธ์ 20 ๊ฐ ์ถ๊ฐ
System.out.println(list.get(0)); // ์ถ๋ ฅ: 10
โ Integer ํ์
์ ์ฐ๊ฒฐ๋ฆฌ์คํธ๋ฅผ ์์ฑํจ
→ Java์์๋ ๊ฐ์ฒด๋ง ์ ๋ค๋ฆญ ํ์
์ผ๋ก ์ฌ์ฉ ๊ฐ๋ฅํ๋ฏ๋ก int๊ฐ ์๋ Integer ์ฌ์ฉ
โก add() ๋ฉ์๋๋ ๋ฆฌ์คํธ์ ๋์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ๊ธฐ๋ฅ
→ 10 ์ ์ ์๊ฐ์ ์ถ๊ฐํจ, ํ์ฌ ๋ฆฌ์คํธ ์ํ [10]
โข ๊ฐ์ ๋ฐฉ์์ผ๋ก 20 ์ ์ ์๊ฐ์ ์ถ๊ฐํจ → ๋ฆฌ์คํธ ์ํ [10, 20]
โฃ list์ ์ฒซ ๋ฒ์งธ ์์(0๋ฒ ์ธ๋ฑ์ค)๋ฅผ ์ฝ์์ ์ถ๋ ฅํ๋ฉด ๊ฒฐ๊ณผ๋ 10์ด ๋์ด
์๊ฐ๋ณต์ก๋
- ์๊ณ ๋ฆฌ์ฆ์ด ์ ๋ ฅ ํฌ๊ธฐ(n)์ ๋ฐ๋ผ ์ผ๋ง๋ ๋นจ๋ฆฌ ์คํ๋๋์ง๋ฅผ ๋ํ๋ด๋ ์งํ
- ์ต์ ์ ๊ฒฝ์ฐ๋ฅผ ๊ธฐ์ค์ผ๋ก Big-O ํ๊ธฐ๋ฒ( O(n), O(1), O(log n) ๋ฑ ) ์ ์ฌ์ฉ
- โป Big-O ํ๊ธฐ๋ฒ
- O(1) → ์ ๋ ฅ ํฌ๊ธฐ์ ์๊ด์์ด ํญ์ ๋์ผํ ์๊ฐ์ ๋์
- O(n) → ์ ๋ ฅ์ด ๋ง์์ง์๋ก ์คํ ์๊ฐ์ด ์ง์ ์ ์ผ๋ก ์ฆ๊ฐ
> ๋ฐฐ์ด
- ๋ฐฐ์ด์ index๋ฅผ ๊ฐ์ง๊ณ ์์ผ๋ฏ๋ก ํ์์ O(1)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง
- ์ฝ์ ์ ๊ฒฝ์ฐ๋ ๋งจ ๋ค๋ผ๊ณ ํ๋ค๋ฉด O(1)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง์ง๋ง ๋งจ ๋ค๊ฐ ์๋ ๋๋จธ์ง๋ O(n)์ ๊ฐ์ง
> ์ฐ๊ฒฐ๋ฆฌ์คํธ
- ์ฝ์ ์ ๋งจ ์์ผ ๊ฒฝ์ฐ O(1)์ ์๊ฐ๋ณต์ก๋๋ฅผ, ๋งจ ์์ด ์๋ ๋๋จธ์ง๋ O(n)์ ๊ฐ์ง
- ํ์์ O(n)์ ์๊ฐ๋ณต์ก๋๋ฅผ ๊ฐ์ง
| ๋ฐฐ์ด(Array) | ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List) | |
| ์ ๊ทผ | O(1) | O(n) |
| ํ์ | O(n) | O(n) |
| ์ฝ์ | O(n) | O(1) ~ O(n) |
| ์ญ์ | O(n) | O(1) ~ O(n) |
์ ๋ฆฌ
| ๋ฐฐ์ด(Array) | ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List) | |
| ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ | ์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ | ๋น์ฐ์์ ๋ฉ๋ชจ๋ฆฌ(๋ ธ๋๋ผ๋ฆฌ ์ฐ๊ฒฐ) |
| ํฌ๊ธฐ | ๊ณ ์ | ๋์ ํ์ฅ ๊ฐ๋ฅ |
| ์ ๊ทผ ์๋ | ๋น ๋ฆ(O(1)) | ๋๋ฆผ(O(n)) |
| ์ฝ์ /์ญ์ | ๋๋ฆผ(๋ฐ์ดํฐ ์ด๋ ํ์) | ๋น ๋ฆ |
| ์ฌ์ฉ ์ฉ๋ | ๋น ๋ฅธ ์ ๊ทผ์ด ํ์ํ ๋ | ์ฝ์ /์ญ์ ๊ฐ ์ฆ์ ๋ |
Reference
https://blacklobster.tistory.com/8
๊ฐ๋ต ์ค๋ช ! ๋ฐฐ์ด(Array)๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(Linked List)์ ๋ํด์ ์์๋ณด์! - ์ฐจ์ด์ ๊ณผ ์๊ฐ๋ณต์ก๋, ํ์ฉ
์์ ์ ํ๋ก ํธ์๋ ๊ฐ๋ฐ์ ๊ธฐ์ ๋ฉด์ ์ค๋น๋ฅผ ํ๋ฉด์ ๊ณต๋ถํ๋ ๋ฐฐ์ด(Array)๊ณผ ์ฐ๊ฒฐ ๋ฆฌ์คํธ(๋งํฌ๋ ๋ฆฌ์คํธ, Linked List)์ ๋ํด์ ๊ฐ๋ตํ๊ฒ ๊ธ์ ์จ๋ณด๋ ค๊ณ ํฉ๋๋ค. ์๋ฃ๊ตฌ์กฐ ๊ณต๋ถํ๋ฉด์ ๋ฐฐ์ด๊ณผ ์ฐ๊ฒฐ
blacklobster.tistory.com
https://code-lab1.tistory.com/427
[์๋ฃ๊ตฌ์กฐ] ๋ฐฐ์ด(Array)๊ณผ ์ฐ๊ฒฐ๋ฆฌ์คํธ(Linked List) ๋น๊ต
๋ฐฐ์ด(Array)๋ฐฐ์ด์ ๋ ผ๋ฆฌ์ ์ ์ฅ์์์ ๋ฌผ๋ฆฌ์ ์ ์ฅ์์๊ฐ ์ผ์นํ๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค. ์ฆ ์ธ๋ฑ์ค(index)๋ก ํด๋น ์์์ ์ ๊ทผ ํ ์ ์๋ค. ๋ฐ๋ผ์ ์์์ ์ธ๋ฑ์ค๊ฐ์ ์ด์ฉํ๋ฉด O(1)์ ํด๋น ์์์ ์ ๊ทผ ํ
code-lab1.tistory.com
'๐ CS > Data Structures' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [์๋ฃ๊ตฌ์กฐ] 01.์คํ(Stack)๊ณผ ํ(Queue) ์ดํดํ๊ธฐ ๊ฐ๋ /๋น๊ต (0) | 2024.01.25 |
|---|