๊ฐœ๋ฐœ์ž HOON
๐Ÿ› HOON DEVLog
๊ฐœ๋ฐœ์ž HOON
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๐Ÿ˜Ž ์ „์ฒด ์นดํ…Œ๊ณ ๋ฆฌ (137)
    • ๐Ÿ“ ์‹ ์ž… ์ธํ„ฐ๋ทฐ ์ค€๋น„ (7)
    • ๐Ÿฆ” ์ทจ์—…์ค€๋น„ ๊ธฐ๋ก (7)
    • โ˜• ์ž๋ฐ” : JAVA (5)
    • ๐Ÿ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋Œ€๋น„ : PS (80)
    • ๐ŸŒฑ ๋ฐฑ์—”๋“œ : Backend (13)
    • ๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS (11)
    • ๐Ÿ—‚ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค : DB (1)
    • ๐Ÿƒ‍โ™‚๏ธ DEVLOG (8)
    • โš™๏ธ Trouble Shooting (5)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • GitHub
  • Resume

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
๊ฐœ๋ฐœ์ž HOON

๐Ÿ› HOON DEVLog

๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS

[์ž๋ฃŒ๊ตฌ์กฐ] Array์™€ LinkedList์˜ ์ฐจ์ด (์ธํ„ฐ๋ทฐ ๋Œ€๋น„)

2022. 10. 23. 15:11

 

๐Ÿ’ก 1. Array(๋ฐฐ์—ด), Array VS ArrayList

 

1. ๋ฐฐ์—ด :  ๋ฐฐ์—ด์€ ์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

 

2.ํฌ๊ธฐ : ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋Š” ๊ณ ์ •๊ธธ์ด์ด๋ฏ€๋กœ, ์ถ”๊ฐ€์ ์œผ๋กœ ๋Š˜๋ฆด ์ˆ˜ ์—†๋‹ค. Array๋Š” ์ดˆ๊ธฐํ™” ์‹œ ๋ฉ”๋ชจ๋ฆฌ์— ํ• ๋‹น๋˜๊ฒŒ ๋œ๋‹ค.

 

3. ์žฅ์  : ๋ฐ์ดํ„ฐ์˜ ์ˆœ์„œ๊ฐ€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” index๊ฐ€ ์กด์žฌํ•˜๋ฉฐ, ์ด index๋ฅผ ํ™œ์šฉํ•ด ํŠน์ • ์š”์†Œ์— ๋Œ€ํ•ด ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ์กฐ์ž‘์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด ์žฅ์ ์ด๋‹ค.

 

4. ๋‹จ์  : ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…์ด๋‚˜ ์‚ญ์ œ๊ฐ€ ์ค‘๊ฐ„์—์„œ ์ด๋ค„์ง€๋Š” ๊ฒฝ์šฐ, ๊ทธ ๋’ค์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ํ•œ ์นธ ์•ž ๋‹น๊ธฐ๊ฑฐ๋‚˜, ๋ฐ€์–ด์ค˜์•ผ ํ•˜๋Š” ์†Œ์š”๊ฐ€ ์žˆ์œผ๋ฏ€๋กœ ์†๋„์  ๋น„์šฉ์ด ์š”๊ตฌ๋œ๋‹ค. O(N)

 

5. ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ : ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค. index๊ฐ€ ์˜๋ฏธ๋ฅผ ๋‚ดํฌํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•ด ์‚ฌ์šฉํ•˜๋ฉด ์ข‹๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด ์ฃผ์‹ ์ •๋ณด๊ฐ€ ์žˆ๋‹ค. ์ฃผ์‹ ์ฐจํŠธ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ค‘๊ฐ„์— ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๊ฑฐ๋‚˜ ์‚ญ์ œ๋˜์ง€ ์•Š๊ณ , ๋‚ ์งœ๋ณ„๋กœ ์ฃผ์‹ ๊ฐ€๊ฒฉ์ด ์ฐจ๋ก€๋Œ€๋กœ ์ธก์ •๋˜์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

 

6. Java์˜ Array vs ArrayList

 ์ฐจ์ด๋Š” 'ํฌ๊ธฐ'์— ์žˆ๋‹ค. ๊ธฐ์กด์˜ Array๋Š” ๊ณ ์ •๊ธธ์ด๋กœ, ํ•œ ๋ฒˆ ๊ธธ์ด๋ฅผ ํ• ๋‹นํ•˜๋ฉด ๋” ์ด์ƒ ๋ฐฐ์—ด์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๋Š˜๋ฆด ์ˆ˜ ์—†๋‹ค. ๋งŒ์•ฝ ๋ฐ์ดํ„ฐ๋ฅผ ๋” ์ถ”๊ฐ€ํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, ์•„์˜ˆ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ํ• ๋‹นํ•ด์„œ ์˜ฎ๊ฒจ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ์†Œ์š”๊ฐ€ ์žˆ๋‹ค.

ํ•˜์ง€๋งŒ ArrayList๋Š” ๋‹ค๋ฅด๋‹ค. ๋‚ด๋ถ€์ ์œผ๋กœ๋Š” ๋ฐฐ์—ด์˜ ํ˜•ํƒœ๋กœ ๊ตฌํ˜„๋˜์–ด์žˆ์ง€๋งŒ, ๊ณ ์ •๊ธธ์ด๊ฐ€ ์•„๋‹Œ ๊ฐ€๋ณ€๊ธธ์ด๋ฅผ ์ฑ„ํƒํ•œ ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.

 

ArrayList๋Š” ๊ฐ์ฒด๋กœ, ๋‚ด๋ถ€์— ArrayList ๋‚ด๋ถ€ ๋ฐฐ์—ด์˜ ์‚ฌ์ด์ฆˆ๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” capacity ๋ฉค๋ฒ„๋ณ€์ˆ˜๊ฐ€ ์žˆ๋‹ค. ArrayList์— ์ž๋ฃŒ๋ฅผ ๊ณ„์†ํ•ด์„œ ์ถ”๊ฐ€ํ•˜๋ฉด ์ด capacity ๋ณ€์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ๋Š˜์–ด๋‚˜๊ฒŒ ๋œ๋‹ค. ์„ค์ •๋œ capacity๋ฅผ ๋„˜์–ด์„  ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜๊ฐ€ ๋“ค์–ด์˜ค๊ฒŒ ๋œ๋‹ค๋ฉด, ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ 1.5๋ฐฐ ์ฆ๊ฐ€์‹œํ‚ค๋Š” ๋กœ์ง์œผ๋กœ ๋‚ด๋ถ€๊ฐ€ ๊ตฌ์„ฑ๋˜์–ด ์žˆ๋‹ค.

 

๊ธฐ๋ณธ์ ์œผ๋กœ ๋‚ด๋ถ€๊ฐ€ ๋ฐฐ์—ด๋กœ ์ด๋ค„์ ธ์žˆ์œผ๋ฏ€๋กœ, ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์— ํ• ๋‹นํ•ด์„œ ์˜ฎ๊ฒจ์ฃผ์–ด์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋™์ผํ•˜๋‹ค. ํ•˜์ง€๋งŒ ๋‚ด๋ถ€์ ์œผ๋กœ, capacity๋ฅผ ๋„˜์–ด์„ ๋‹ค๋ฉด 1.5๋ฐฐ ์ปค์ง„ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ , ํ•ด๋‹น ๋ฐฐ์—ด์— copy๋ฅผ ์‹œ์ผœ์ฃผ๋Š” ์ž‘์—…์„ ์ž๋™์œผ๋กœ ์ง„ํ–‰ํ•ด์ค€๋‹ค๋Š” ์ ์—์„œ ๊ต‰์žฅํžˆ ํŽธ๋ฆฌํ•˜๋‹ค.

 

resize operation์ด ๋ฐœ๋™์ด ๋˜๋Š” ๋งŒํผ, ์‹œ๊ฐ„ ๋ณต์žก๋„ ์ธก๋ฉด์—์„œ ์†ํ•ด๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ถ”๊ฐ€์ ์œผ๋กœ Array๋Š” ์›์‹œ ์ž๋ฃŒํ˜•๊ณผ Object๋ฅผ ๋ชจ๋‘ ์ €์žฅํ•  ์ˆ˜ ์žˆ์œผ๋‚˜, ArrayList๋Š” Object๋งŒ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ธฐ๋ณธํ˜•์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€ํ•˜๋ฏ€๋กœ ์ €์žฅ ์‹œ autoboxing์— ์˜ํ•ด ์›์‹œ ์ž๋ฃŒํ˜•์ด ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ฒ˜๋Ÿผ ๋ณด์ธ๋‹ค.

 

๐Ÿ’ก 2. LinkedList (์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ)

 

1. ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ : ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋ฐ์ดํ„ฐ์™€ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ํ•œ ์ค„๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š” ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

 

2. ํฌ๊ธฐ : ํฌ๊ธฐ๊ฐ€ ์ •ํ•ด์ ธ์žˆ์ง€ ์•Š๋‹ค.

 

3. ์žฅ์  : ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๋Š” ์ž๊ธฐ ์ž์‹  ๋‹ค์Œ์— ์–ด๋–ค ์›์†Œ๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€ ์•Œ๊ธฐ ๋•Œ๋ฌธ์—, ์—ฐ๊ฒฐ์„ ๋Š๊ณ  ๋‹ค์Œ ๋…ธ๋“œ๋กœ ์ด์–ด์ฃผ๊ธฐ๋งŒ ํ•ด์ฃผ๋ฉด ์‚ญ์ œ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ์‚ฝ์ž…๋„ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ, ์ค‘๊ฐ„ ์—ฐ๊ฒฐ์„ ๋Š๊ณ  ์ƒˆ๋กœ์šด ๋…ธ๋“œ์— ๊ฐ๊ฐ ์—ฐ๊ฒฐ๋˜๋„๋ก ์„ค์ •ํ•˜๋ฉด ์‰ฝ๊ฒŒ ์‚ฝ์ž… ์—ฐ์‚ฐ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค. O(1)์˜ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ์‚ญ์ œ์™€ ์‚ฝ์ž… ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4. ๋‹จ์  : ๋ฐฐ์—ด๊ณผ ๋‹ค๋ฅด๊ฒŒ index๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค. ํŠน์ • ๊ฐ’์„ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” ํ•ด๋‹น ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋‚ด๋ถ€์˜ ์›์†Œ๋ฅผ ๋ชจ๋‘ ๋‹ค ๋’ค์ ธ์•ผ ํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰์— ๋Œ€ํ•œ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(N)์ด ์†Œ์š”๋œ๋‹ค.

 

5. ์‚ฌ์šฉํ•˜๋ฉด ์ข‹์€ ๊ฒฝ์šฐ : ์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž… ์‚ญ์ œ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ, ์ž๋ฃŒ๊ตฌ์กฐ ๋‚ด๋ถ€์— ๋ช‡ ๊ฐœ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ฝ์ž…ํ•  ์ง€ ๋ชจ๋ฅด๋Š” ๊ฒฝ์šฐ ๋“ฑ์— ํ™œ์šฉํ•˜๋ฉด ์ข‹๋‹ค.

 

๐Ÿ˜Ž ์ถœ์ฒ˜

[๋งํฌ] https://velog.io/@humblechoi/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-Array-vs-ArrayList ([์ž๋ฃŒ๊ตฌ์กฐ] Array vs ArrayList)

์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋™์ผ์กฐ๊ฑด (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[์ž๋ฃŒ๊ตฌ์กฐ] Priority Queue (์šฐ์„ ์ˆœ์œ„ ํ) ์ธํ„ฐ๋ทฐ ๋Œ€๋น„  (0) 2022.10.23
[์ž๋ฃŒ๊ตฌ์กฐ] Stack๊ณผ Queue์˜ ๋น„๊ต (์ธํ„ฐ๋ทฐ ๋Œ€๋น„)  (0) 2022.10.23
[๊ฐœ๋ฐœ๊ณตํ†ต] Call by value์™€ Call by reference (Java, Python, C/C++)  (0) 2022.10.11
[Algorithm] ํž™ ์ •๋ ฌ (Heap Sort)  (0) 2022.09.03
[Alogrithm] ์‚ฝ์ž… ์ •๋ ฌ (Injection Sort)  (0) 2022.09.03
    '๐Ÿงช ์ปดํ“จํ„ฐ๊ณผํ•™ : CS' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [์ž๋ฃŒ๊ตฌ์กฐ] Priority Queue (์šฐ์„ ์ˆœ์œ„ ํ) ์ธํ„ฐ๋ทฐ ๋Œ€๋น„
    • [์ž๋ฃŒ๊ตฌ์กฐ] Stack๊ณผ Queue์˜ ๋น„๊ต (์ธํ„ฐ๋ทฐ ๋Œ€๋น„)
    • [๊ฐœ๋ฐœ๊ณตํ†ต] Call by value์™€ Call by reference (Java, Python, C/C++)
    • [Algorithm] ํž™ ์ •๋ ฌ (Heap Sort)
    ๊ฐœ๋ฐœ์ž HOON
    ๊ฐœ๋ฐœ์ž HOON
    ์ข‹์€ ๋ฐฑ์—”๋“œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๊ธฐ๋ก์„ ๋ชจ์•˜์Šต๋‹ˆ๋‹ค. # ์ฃผ๋‹ˆ์–ด # ๋ฐฑ์—”๋“œ # ๊ฐœ๋ฐœ์ž

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”