Skip to content

Latest commit

ย 

History

History
73 lines (46 loc) ยท 3.47 KB

[Data Structure] Array vs LinkedList.md

File metadata and controls

73 lines (46 loc) ยท 3.47 KB

Array vs LinkedList

Array์™€ LinkedList์˜ ๋น„๊ต์ด๋‹ค.

  • Array

    • ๋ฐฐ์—ด์ด๋ฉฐ, ๋…ผ๋ฆฌ์  ์ €์žฅ์ˆœ์„œ์™€ ๋ฌผ๋ฆฌ์  ์ €์žฅ์ˆœ์„œ๊ฐ€ ์ผ์น˜ํ•œ๋‹ค.
    • ํŠน์ • ์ž๋ฃŒํ˜•๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ƒ์—์„œ ์—ฐ์†์ ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
    • immutableํ•˜๋‹ค.
    • ์ธ๋ฑ์Šค๋กœ ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์ธ๋ฑ์Šค๋ฅผ ์•Œ๊ณ  ์žˆ๋‹ค๋ฉด O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋กœ ์›์†Œ์— ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ์ฆ‰, Random Access๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์‚ญ์ œ ๋˜๋Š” ์‚ฝ์ž… ๊ณผ์ •์—์„œ๋Š” ํ•ด๋‹น ์›์†Œ์— ์ ‘๊ทผํ•˜์—ฌ ์ž‘์—…์„ ์™„๋ฃŒํ•œ ๋’ค, shiftํ•ด์ค˜์•ผ ํ•˜๋ฏ€๋กœ ๋น„์šฉ์ด ๋ฐœ์ƒํ•œ๋‹ค. O(n)
    • ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ํ™œ์šฉ์— ์ œ์•ฝ์ด ์žˆ๋‹ค.
  • LinkedList

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

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์†๋„

  • Array
    • ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋น ๋ฅด๊ฒŒ ์ ‘๊ทผํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด๋‹ค.
    • Random Access๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • LinkedList
    • ํŠน์ • ์›์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ์ฐจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด๋‹ค.

๋ฐ์ดํ„ฐ ์‚ฝ์ž… ์†๋„

  • Array
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ค‘๊ฐ„์ด๋‚˜ ๋งจ ์•ž์— ์‚ฝ์ž…ํ•  ๊ฒฝ์šฐ, ์ดํ›„์˜ ๋ฐ์ดํ„ฐ๋ฅผ Shiftํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ถ”๊ฐ€ ๊ณผ์ •๊ณผ ์‹œ๊ฐ„์ด ์†Œ์š”๋œ๋‹ค.
    • ๋”ฐ๋ผ์„œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ, ๋น„ํšจ์œจ์ ์ด๋‹ค.
    • O(N)์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.
  • LinkedList
    • ์ค‘๊ฐ„ ์‚ฝ์ž… ์—†์ด ๋งจ ์•ž๊ณผ ๋งจ ๋’ค์—๋งŒ ์‚ฝ์ž…ํ•œ๋‹ค๋ฉด O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.
    • ๊ทธ๋ ‡์ง€ ์•Š๋‹ค๋ฉด ์‚ฝ์ž…ํ•  ์œ„์น˜๋ฅผ ์ฐพ๊ณ (O(N))๊ณผ ์‚ฝ์ž… ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.
    • ๊ทธ๋Ÿผ์—๋„ ๋ถˆ๊ตฌํ•˜๊ณ  Array๋ณด๋‹ค ๋น ๋ฅธ ์„ฑ๋Šฅ์„ ๊ฐ–๋Š”๋‹ค.

Array์˜ ๊ฒฝ์šฐ, ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•˜์—ฌ ๋ชจ๋“  ๊ณต๊ฐ„์ด ๊ฝ‰ ์ฐจ๊ฒŒ ๋˜๋ฉด ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›์•„ ์˜ฎ๊ฒจ์•ผ ํ•˜์ง€๋งŒ, LinkedList๋ฅผ ๊ทธ๋Ÿด ํ•„์š”๊ฐ€ ์—†๋‹ค. ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ• ๋‹น๋ฐ›๋Š”๋‹ค.

๋ฐ์ดํ„ฐ ์‚ญ์ œ ์†๋„

  • Array
    • ๋ฐ์ดํ„ฐ ์‚ญ์ œ์˜ ๊ฒฝ์šฐ, ๊ทธ ์œ„์น˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•œ ํ›„ ์ „์ฒด์ ์œผ๋กœ Shiftํ•ด์ค˜์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— O(N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค.
  • LinkedList
    • ์‚ญ์ œํ•  ์›์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด O(N)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๊ณ  ์‚ญ์ œํ•œ๋‹ค. ํ•˜์ง€๋งŒ, Array๋ณด๋‹ค ๋น ๋ฅด๊ฒŒ ์‚ญ์ œ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น

  • Array
    • ๋ฉ”๋ชจ๋ฆฌ์—๋Š” Array๊ฐ€ ์„ ์–ธ๋˜์ž ๋งˆ์ž Compile time์— ํ• ๋‹น๋˜์–ด ์ง„๋‹ค.
    • ์ •์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • LinkedList
    • ๋ฉ”๋ชจ๋ฆฌ๋Š” ์ƒˆ๋กœ์šด Node๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ runtime์— ํ• ๋‹น๋˜์–ด ์ง„๋‹ค.
    • ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด๋ผ๊ณ  ํ•œ๋‹ค.

๊ฒฐ๋ก 

  • ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚œ๋‹ค๋ฉด LinkedList๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.
  • ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚œ๋‹ค๋ฉด Array๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.