Skip to content

Latest commit

ย 

History

History
51 lines (30 loc) ยท 2.59 KB

[Data Sturcture] ArrayList vs LinkedList.md

File metadata and controls

51 lines (30 loc) ยท 2.59 KB

Dynamic Array vs LinkedList

++2020.06.01

์ž๋ฃŒ๊ตฌ์กฐ์— ํ•ด๋‹นํ•˜๋Š” ํŒŒํŠธ์ด์ง€๋งŒ, ์ž๋ฐ”๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ์„ค๋ช…์„ ์ง„ํ–‰ํ–ˆ๋‹ค.

๊ทธ๋Ÿฌ๋‹ค๋ณด๋‹ˆ Collection์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋„ค์ด๋ฐ์„ ๋”ฐ๋ผ ArrayList๋ผ๊ณ  ํ‘œ๊ธฐ๋ฅผ ํ–ˆ๋‹ค.

ํ•„์ž์˜ ๊ธ€์„ ๋ณด๊ณ  ์žˆ๋˜ ๋ถ„์˜ ์กฐ์–ธ์œผ๋กœ Dynamic Array๋กœ ๋„ค์ด๋ฐ์„ ๋ณ€๊ฒฝํ•œ๋‹ค.

  • Java : ArrayList
  • C++ : Vector

๊ธฐ๋ณธ์ ์ด๋ฉด์„œ๋„ ๋ฉด์ ‘ ์งˆ๋ฌธ์— ๋น ์ง€์ง€ ์•Š๊ณ  ๋“ฑ์žฅํ•˜๋Š” ๋‹จ๊ณจ ์งˆ๋ฌธ์ด๋‹ค.

๊ทธ๋ž˜์„œ ์ •๋ฆฌํ•˜๋ ค ํ•œ๋‹ค.

  • Dynamic Array(ArrayList)

    • ์ด๋ฆ„์ฒ˜๋Ÿผ ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•œ๋‹ค.
    • ์ธ๋ฑ์Šค๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์— ์ ํ•ฉํ•˜๊ณ  ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
      • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1)
    • ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ์ œ์™ธํ•œ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ์ž„์‹œ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด ๋ณต์‚ฌํ•˜๋ฏ€๋กœ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•  ๊ฒฝ์šฐ ์†๋„๊ฐ€ ๋Š๋ฆฌ๋ฉฐ ๋ถ€์ ํ•ฉํ•˜๋‹ค.
      • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(n)
    • ๋™๊ธฐํ™”๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š์•„ Vector๋ณด๋‹ค ๋น ๋ฅด๋‹ค.
  • LinkedList

    • ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ด์ „ ๋…ธ๋“œ์™€ ๋‹ค์Œ ๋…ธ๋“œ์˜ ์ƒํƒœ๋งŒ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ๋œ๋‹ค.
    • ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰ ์‹œ์—๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ๋…ธ๋“œ๋ฅผ ์ˆœํšŒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์˜ค๋ž˜ ๊ฑธ๋ฆฌ๋ฉฐ ์„ฑ๋Šฅ์ƒ ์ข‹์ง€ ์•Š๋‹ค.
      • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(n)
    • ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ์‹œ ๋ถˆํ•„์š”ํ•œ ๋ฐ์ดํ„ฐ์˜ ๋ณต์‚ฌ๊ฐ€ ์—†์–ด ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ์œ ๋ฆฌํ•˜๋‹ค.
      • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1)
      • ํ•˜์ง€๋งŒ, ๊ฒฝ์šฐ์— ๋”ฐ๋ผ์„œ ๋‹ค๋ฅด๊ธฐ๋„ ํ•˜๋‹ค.
      • ์™œ๋ƒํ•˜๋ฉด ์‚ฝ์ž…, ์‚ญ์ œ๋ฅผ ํ•˜๊ธฐ ์œ„ํ•œ ๋…ธ๋“œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ฒฐ๊ตญ O(n)์ด ๊ฑธ๋ฆฌ๊ณ  ์‚ฝ์ž…, ์‚ญ์ œ๋ฅผ ์œ„ํ•œ ์‹œ๊ฐ„ ๋ณต์žก๋„๊นŒ์ง€ ๊ณ„์‚ฐํ•˜๋ฉด ๊ฒฐ๊ตญ O(n)์ด ๊ฑธ๋ฆฐ๋‹ค.
      • ๋งŒ์•ฝ, ์ค‘๊ฐ„ ์š”์†Œ์˜ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ์—†๊ณ  ๋งจ ์•ž๊ณผ ๋’ค ์š”์†Œ์˜ ์‚ฝ์ž…, ์‚ญ์ œ๋งŒ ํ•œ๋‹ค๋ฉด O(1)์ด ๊ฑธ๋ฆฐ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด O(n).

๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ์˜ ๊ฒ€์ƒ‰์ด ์ฃผ๊ฐ€ ๋˜๋Š” ๊ฒฝ์šฐ์—๋Š” Dynamic Array(ArrayList)๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ์ข‹๋‹ค.

๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๋‹ค๋ฉด Dynamic Array(ArrayList)๋ณด๋‹ค๋Š” LinkedList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋‚ซ๋‹ค.

++์ถ”๊ฐ€

์‹ค์ œ๋กœ ๋ฐฑ์ค€์— ์žˆ๋Š” ์‚ผ์„ฑ ๊ธฐ์ถœ ๋ฌธ์ œ ์ค‘ ๋‚˜๋ฌด ์žฌํ…Œํฌ ๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ, ArrayList๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์—†๋‹ค. ์ด ๋ฌธ์ œ์—์„œ๋Š” ๋‚˜๋ฌด๋ฅผ ๊ด€๋ฆฌํ•˜๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ์กด์žฌํ•˜๋Š”๋ฐ, ์ฃฝ์€ ๋‚˜๋ฌด์˜ ๊ฒฝ์šฐ ๋‚˜๋ฌด ๋ฆฌ์ŠคํŠธ์—์„œ ๋‚˜๋ฌด๋ฅผ ์ œ๊ฑฐํ•ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋นˆ๋ฒˆํ•œ ์‚ญ์ œ ๋ฐ ์‚ฝ์ž…์ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— LinkedList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋” ํšจ์œจ์ ์ด๋‹ค. ๋‚˜๋ฌด ์žฌํ…Œํฌ ๋ฌธ์ œ๋ฅผ ๊ผญ ํ’€์–ด๋ณด๋Š” ๊ฒƒ์„ ์ถ”์ฒœํ•œ๋‹ค.