Dynamic Array

์ตœ์ œ์›ยท2023๋…„ 1์›” 23์ผ
0

์ž๋ฃŒ๊ตฌ์กฐ

๋ชฉ๋ก ๋ณด๊ธฐ
4/4
post-thumbnail

๐Ÿ’ก Dynamic Array๋Š” ์–ด๋–ค ์ž๋ฃŒ๊ตฌ์กฐ ์ธ๊ฐ€

Array์˜ ๊ฒฝ์šฐ size๊ฐ€ ๊ณ ์ •๋˜์—ˆ๊ธฐ ๋•Œ๋ฌธ์— ์„ ์–ธ์‹œ์— ์„ค์ •ํ•œ size๋ณด๋‹ค
๋งŽ์€ ๊ฐฏ์ˆ˜์˜ data๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ์ €์žฅ ํ•  ์ˆ˜ ์—†๋‹ค
์ด์— ๋ฐ˜ํ•ด Dynamic Array๋Š” ์ €์žฅ๊ณต๊ฐ„์ด ๊ฐ€๋“ ์ฐจ๊ฒŒ ๋˜๋ฉด
resize๋ฅผ ํ†ตํ•˜์—ฌ ์œ ๋™์ ์œผ๋กœ size๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค

Dynamic Array์˜ ํ•ต์‹ฌ ์š”์†Œ๋Š” ๋‘๊ฐ€์ง€์ด๋‹ค

  1. resize๋ฅผ ํ•˜๋Š” ๋ฐฉ์‹
  2. ๋ฐ์ดํ„ฐ ์ถ”๊ฐ€(append)ํ•  ๋•Œ์˜ ์‹œ๊ฐ„๋ณต์žก๋„

resize

ํ•ด๋‹น A๋ฐฐ์—ด์— 6์ด๋ผ๋Š” ํ•ญ๋ชฉ์„ ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด

B๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ค€๋’ค A๋ฐฐ์—ด์„ ๋ณต์‚ฌํ•ด์ฃผ๊ณ  6์„ ์ถ”๊ฐ€ํ•˜๋ฉด๋œ๋‹ค

๊ทธ ํ›„์— A๋ฐฐ์—ด์€ ์‚ญ์ œ์‹œ์ผœ์ฃผ๋ฉด ์ด๊ฒƒ์„ ์šฐ๋ฆฌ๋Š” resize๋ผ๊ณ  ํ•œ๋‹ค


Doubling

๐Ÿ’ก Doubling

resize์˜ ๋Œ€ํ‘œ์ ์ธ ๋ฐฉ๋ฒ•์ด๋‹ค
๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€(append O(1))ํ•˜๋‹ค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ดˆ๊ณผํ•˜๊ฒŒ ๋˜๋ฉด
๊ธฐ์กด ๋ฐฐ์—ด์˜ size๋ณด๋‹ค ๋‘๋ฐฐ ํฐ ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ผ์ด ์˜ฎ๊ธฐ๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค
(N๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ผ์ด ์˜ฎ๊ฒจ์•ผ ํ•˜๋ฏ€๋กœ O(n) ๋ฐฉ๋ฒ•์ด๋‹ค)

์ €๋ฒˆ ํฌ์ŠคํŒ…์— ๊ธฐ์žฌํ•œ๊ฒƒ์ฒ˜๋Ÿผ array append์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ด๋‹ค
ํ•˜์ง€๋งŒ doubling์ด ์ˆ˜ํ–‰๋˜๋ฉฐ ๊ธฐ์กด ๋ฐฐ์—ด์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต์‚ฌํ•˜๋ฉฐ O(n)์˜
์‹œ๊ฐ„์ด ์†Œ์š”๋˜๊ฒŒ ๋œ๋‹ค
์ด๋Ÿฌํ•œ ๊ณผ์ •์—์„œ Array append์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(1)์ผ๊นŒ O(n)์ผ๊นŒ ?


๋ถ„ํ• ์ƒํ™˜ ์‹œ๊ฐ„๋ณต์žก๋„

๐Ÿ’ก ๋ถ„ํ• ์ƒํ™˜ ์‹œ๊ฐ„๋ณต์žก๋„(Amotized time complexity)

์œ„ ์งˆ๋ฌธ์— ๋Œ€ํ•œ ํ•ด๋‹ต์€ ์—ฌ๊ธฐ์„œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค
append์˜ ์ด๊ณผ์ •์„ ์‚ดํŽด๋ณด๋ฉด ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์ง€๋ง‰ ์ธ๋ฑ์Šค์— ์ถ”๊ฐ€ํ•˜๋Š”(O(1))์ž‘์—…์ด ๋Œ€๋‹ค์ˆ˜์ด๊ณ ,
size๋ฅผ ๋„˜์–ด์„ค ๋•Œ 2๋ฐฐ์˜ size๋กœ ๋Š˜๋ฆฌ๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ์ผ์ผ์ด ๋ณต์‚ฌํ•˜๋Š” ๊ณผ์ •(resize O(n))์ด ์•„์ฃผ ๊ฐ€๋” ๋ฐœ์ƒํ•จ
๊ฒฐ๋ก ๋ถ€ํ„ฐ ๋งํ•˜์ž๋ฉด append์˜ ์ „์ฒด์ ์ธ ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(1)์ด๋‹ค.
์ •ํ™•ํžˆ ๋งํ•˜์ž๋ฉด amortized O(1) ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋ฉฐ
์‰ฝ๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด ๊ฐ€๋” ๋ฐœ์ƒํ•˜๋Š” O(n)์˜ resizeํ•˜๋Š” ์‹œ๊ฐ„์„,
์ž์ฃผ ๋ฐœ์ƒํ•˜๋Š” O(1)์˜ ์ž‘์—…๋“ค์ด ๋ถ„๋‹ดํ•ด์„œ ๋‚˜๋ˆ  ๊ฐ€์ง์œผ๋กœ์จ
์ „์ฒด์ ์œผ๋กœ O(1)์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ–๋Š”๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค

0๊ฐœ์˜ ๋Œ“๊ธ€