Light Red Pointer [์ž๋ฃŒ๊ตฌ์กฐ] 02.๋ฐฐ์—ด(Array)๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List) ์ดํ•ดํ•˜๊ธฐ ๊ฐœ๋…/๋น„๊ต
 

[์ž๋ฃŒ๊ตฌ์กฐ] 02.๋ฐฐ์—ด(Array)๊ณผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List) ์ดํ•ดํ•˜๊ธฐ ๊ฐœ๋…/๋น„๊ต


 

 
 

๋ชฉ์ฐจ

1. ๋ฐฐ์—ด(Array)

2. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ(Linked List)

3. ์‹œ๊ฐ„๋ณต์žก๋„

4. ์ •๋ฆฌ

 

 

 

์„œ๋ก 

ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ €์žฅํ•˜๊ณ  ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค์–‘ํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ์‚ฌ์šฉ๋œ๋‹ค. ๊ทธ ์ค‘์—์„œ๋„ ๋ฐฐ์—ด(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