๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–‹๏ธ ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜/์•Œ๊ณ ๋ฆฌ์ฆ˜,์ž๋ฃŒ๊ตฌ์กฐ

[๋ฆฌ์ŠคํŠธ] ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

by OR15A 2023. 11. 21.

์ƒํ™œ ์† ๋ฆฌ์ŠคํŠธ ์˜ˆ์‹œ

  • ์œ„์‹œ ๋ฆฌ์ŠคํŠธ, ๋ธ”๋ž™ ๋ฆฌ์ŠคํŠธ, ์„œ๋น„์Šค๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๋Š” ์‚ฌ๋žŒ ๋ฆฌ์ŠคํŠธ 

 

๋ฆฌ์ŠคํŠธ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ADT(์ถ”์ƒ ๋ฐ์ดํ„ฐ ํƒ€์ž…)

๋ฆฌ์ŠคํŠธ์˜ ๊ธฐ๋ณธ ์ •์˜
  • ์ค„ ์„ธ์›Œ์ ธ ์žˆ๋Š” ๋ฐ์ดํ„ฐ

 

ADT
i๋ฒˆ์งธ ์ž๋ฆฌ์— ์›์†Œ x๋ฅผ ์‚ฝ์ž…ํ•œ๋‹ค.
i๋ฒˆ์งธ ์›์†Œ๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
์›์†Œ x๋ฅผ ์‚ญ์ œํ•œ๋‹ค.
i๋ฒˆ์งธ ์›์†Œ๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
์›์†Œ x๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ์›์†Œ์ธ์ง€ ์•Œ๋ ค์ค€๋‹ค.
๋ฆฌ์ŠคํŠธ์˜ ์‚ฌ์ด์ฆˆ(์›์†Œ์˜ ์ด ์ˆ˜)๋ฅผ ์•Œ๋ ค์ค€๋‹ค.
  • ํŒŒ์ด์ฝ๋Šฅ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ธฐ๋ณธ ์ž๋ฃŒ๊ตฌ์กฐ๋กœ ์ œ๊ณตํ•˜๋ฉฐ, ์œ„ ์ž‘์—…๋ณด๋‹ค ํ›จ์”ฉ ๋” ๋งŽ์€ ์ž‘์—…์„ ์ง€์›ํ•จ
  • ์ž๋ฐ”๋Š” ์–ธ์–ด ์ž์ฒด์—์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ java.util ํŒจํ‚ค์ง€์—์„œ ์ œ๊ณตํ•จ

 

 

๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ ArrayList

1. ๊ตฌ์„ฑ์š”์†Œ
  • ๋‚ด๋ถ€๋ฐฐ์—ด : ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋ฐฐ์—ด(Object[])์„ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ. ์ด ๋ฐฐ์—ด์€ ํ•„์š”์— ๋”ฐ๋ผ ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋จ.
  • ์šฉ๋Ÿ‰ : ๋‚ด๋ถ€ ๋ฐฐ์—ด์˜ ํ˜„์žฌ ํฌ๊ธฐ. ArrayList์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ ๋‚ด๋ถ€ ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋ฐฐ์—ด์ด ์ž๋™์œผ๋กœ ์žฌํ• ๋‹น๋˜์–ด ํฌ๊ธฐ๊ฐ€ ์ฆ๊ฐ€ํ•จ.
  • ํฌ๊ธฐ : ArrayList์— ์‹ค์ œ ์ €์žฅ๋œ ์š”์†Œ์˜ ์ˆ˜. size() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์•Œ ์ˆ˜ ์žˆ์Œ

 

2. ์ž‘๋™ ์›๋ฆฌ
  • ๋™์  ๋ฐฐ์—ด : ์ฒ˜์Œ์—๋Š” ๊ธฐ๋ณธ ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์„ ํ• ๋‹น. ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๊ฐ€ ๋ถ€์กฑํ•˜๋ฉด ๋” ํฐ ์ƒˆ ๋ฐฐ์—ด์„ ๋งŒ๋“ค๊ณ , ๊ธฐ์กด ์š”์†Œ๋“ค์„ ์ƒˆ ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌ.
  • ์ธ๋ฑ์Šค ์ ‘๊ทผ : ArrayList๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ. get(int index) ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Œ

 

3. ์ฃผ์š” ๋ฉ”์„œ๋“œ
  • add(E element) : ๋ฆฌ์ŠคํŠธ ๋์— ์š”์†Œ ์ถ”๊ฐ€
  • add(int index, E element) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€. ํ•ด๋‹น ์ธ๋ฑ์Šค์™€ ๊ทธ ์ดํ›„์˜ ์š”์†Œ๋“ค์€ ๋’ค๋กœ ์ด๋™
  • remove(int index): ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ๋’ค์— ์žˆ๋Š” ์š”์†Œ๋“ค์„ ์•ž์œผ๋กœ ์ด๋™
  • get(int index) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜
  • set(int index, E element) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์ƒˆ ์š”์†Œ๋กœ ๋ฐ”๊ฟˆ
  • size() : ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ๋œ ์š”์†Œ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
  • clear() : ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐ
  • contains(Object o) : ๋ฆฌ์ŠคํŠธ๊ฐ€ ํŠน์ • ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ. ํฌํ•จํ•˜๊ณ  ์žˆ์œผ๋ฉด true๋ฅผ, ์•„๋‹ˆ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜
  • indexOf(Object o) : ํŠน์ • ์š”์†Œ๊ฐ€ ๋ฆฌ์ŠคํŠธ ๋‚ด์—์„œ ์ฒ˜์Œ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์œ„์น˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜. ๋ฆฌ์ŠคํŠธ์— ์š”์†Œ๊ฐ€ ์—†์œผ๋ฉด -1์„ ๋ฐ˜ํ™˜
  • lastIndexOf(Object o) : ํŠน์ • ์š”์†Œ๊ฐ€ ๋ฆฌ์ŠคํŠธ ๋‚ด์—์„œ ๋งˆ์ง€๋ง‰์œผ๋กœ ๋‚˜ํƒ€๋‚˜๋Š” ์œ„์น˜์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
  • toArray() : ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค์„ ๋ฐฐ์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
  • subList(int fromIndex, int toIndex) : ๋ฆฌ์ŠคํŠธ์˜ ์ผ๋ถ€๋ถ„์„ ๋ทฐ(view)๋กœ ๋ฐ˜ํ™˜
  • iterator() : ๋ฆฌ์ŠคํŠธ์˜ ์š”์†Œ๋“ค์„ ์ˆœํšŒํ•  ์ˆ˜ ์žˆ๋Š” Iterator ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
  • forEach(Consumer<? super E> action) : ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ์ฃผ์–ด์ง„ ์ž‘์—…์„ ์ˆ˜ํ–‰
  • sort(Comparator<? super E> c) : ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฃผ์–ด์ง„ ๋น„๊ต์ž(comparator)์— ๋”ฐ๋ผ ์ •๋ ฌ
  • isEmpty() : ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ. ๋น„์–ด์žˆ์œผ๋ฉด true, ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜

 

 

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ LinkedList

1. ๊ตฌ์„ฑ์š”์†Œ
  • ๋…ธ๋“œ(Node) : LinkedList์˜ ๊ฐ ์š”์†Œ๋Š” ๋…ธ๋“œ๋กœ ๊ตฌํ˜„๋จ. ๊ฐ ๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋…ธ๋“œ(๋ฐ ์ด์ „ ๋…ธ๋“œ)์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ง
  • ํ—ค๋“œ(Head)์™€ ํ…Œ์ผ(Tail) : ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ—ค๋“œ์™€ ๋ ๋ถ€๋ถ„์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ…Œ์ผ์ด ์žˆ์Œ. ์ด๊ฒƒ์€ ๋ฆฌ์ŠคํŠธ์˜ ์ฒ˜์Œ๊ณผ ๋์— ์ ‘๊ทผ์„ ์šฉ์ดํ•˜๊ฒŒ ํ•จ

 

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

 

3, ์ฃผ์š” ๋ฉ”์„œ๋“œ
  • add(E element) : ๋ฆฌ์ŠคํŠธ์˜ ๋์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  • add(int index, E element) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  • remove(int index) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์ œ๊ฑฐ
  • get(int index) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜
  • set(int index, E element) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์˜ ์š”์†Œ๋ฅผ ์ƒˆ ์š”์†Œ๋กœ ๋ฐ”๊ฟˆ
  • size() : ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ๋œ ์š”์†Œ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
  • clear() : ๋ฆฌ์ŠคํŠธ์˜ ๋ชจ๋“  ์š”์†Œ๋ฅผ ์ œ๊ฑฐ
  • contains(Object o ): ๋ฆฌ์ŠคํŠธ๊ฐ€ ํŠน์ • ์š”์†Œ๋ฅผ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ํ™•์ธ
  • indexOf(Object o) : ํŠน์ • ์š”์†Œ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ฐ˜ํ™˜
  • addFirst(E e) / offerFirst(E e): ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  • addLast(E e) / offerLast(E e): ๋ฆฌ์ŠคํŠธ์˜ ๋ ๋ถ€๋ถ„์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€
  • removeFirst() / pollFirst(): ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜. ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ณ , pollFirst()๋Š” null์„ ๋ฐ˜ํ™˜
  • removeLast() / pollLast(): ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜. removeLast()๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ณ , pollLast()๋Š” null์„ ๋ฐ˜ํ™˜
  • getFirst() / peekFirst(): ๋ฆฌ์ŠคํŠธ์˜ ์ฒซ ๋ฒˆ์งธ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์ œ๊ฑฐํ•˜์ง€๋Š” ์•Š์Œ. getFirst()๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ณ , peekFirst()๋Š” null์„ ๋ฐ˜ํ™˜
  • getLast() / peekLast(): ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ์š”์†Œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ์ œ๊ฑฐํ•˜์ง€๋Š” ์•Š์Œ. getLast()๋Š” ๋ฆฌ์ŠคํŠธ๊ฐ€ ๋น„์–ด์žˆ์„ ๊ฒฝ์šฐ ์˜ˆ์™ธ๋ฅผ ๋˜์ง€๊ณ , peekLast()๋Š” null์„ ๋ฐ˜ํ™˜
  • iterator(): ๋ฆฌ์ŠคํŠธ ์š”์†Œ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” Iterator ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜
  • descendingIterator(): ๋ฆฌ์ŠคํŠธ ์š”์†Œ๋ฅผ ์—ญ์ˆœ์œผ๋กœ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” Iterator ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜

 

๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ์™€ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ ๋น„๊ต

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

 

์„ฑ๋Šฅ
ArrayList ๊ฒ€์ƒ‰: ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ์œผ๋กœ ๊ฒ€์ƒ‰์ด ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.
์‚ฝ์ž…/์‚ญ์ œ: ๋ฆฌ์ŠคํŠธ ์ค‘๊ฐ„์— ์š”์†Œ๋ฅผ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฐฐ์—ด์˜ ์žฌ์กฐ์ •์ด ํ•„์š”ํ•˜์—ฌ ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค
LinkedList ๊ฒ€์ƒ‰: ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ ๋Š๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์‚ฝ์ž…/์‚ญ์ œ: ๋ฆฌ์ŠคํŠธ์˜ ์–ด๋Š ์œ„์น˜์—์„œ๋‚˜ ์š”์†Œ๋ฅผ ๋น ๋ฅด๊ฒŒ ์‚ฝ์ž…ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํŠนํžˆ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘ ๋˜๋Š” ๋์—์„œ๋Š” ๋งค์šฐ ๋น ๋ฆ…๋‹ˆ๋‹ค.
  • ์ •๋ ฌ๋œ ์ƒํƒœ์˜ ๋ฐฐ์—ด ๋ฆฌ์ŠคํŠธ์—์„œ ์›์†Œ๋ฅผ log n ์‹œ๊ฐ„์— ๊ฒ€์ƒํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ : ์ด์ง„ ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

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

 

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

 

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

 

 

๋ฆฌ์ŠคํŠธ์˜ ์žฅ์ ๊ณผ ๋‹จ์ 

์žฅ์ 
๋™์  ํฌ๊ธฐ ์กฐ์ •: ๋ฆฌ์ŠคํŠธ๋Š” ๋™์ ์œผ๋กœ ํฌ๊ธฐ๊ฐ€ ์กฐ์ •๋ฉ๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ๋ฏธ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•  ํ•„์š”๊ฐ€ ์—†์œผ๋ฉฐ, ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ๋•Œ ๋ฆฌ์ŠคํŠธ์˜ ํฌ๊ธฐ๊ฐ€ ์ž๋™์œผ๋กœ ์กฐ์ ˆ๋ฉ๋‹ˆ๋‹ค.

์ˆœ์„œ ์œ ์ง€: ๋ฆฌ์ŠคํŠธ๋Š” ์š”์†Œ๋“ค์„ ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅํ•˜๋ฉฐ, ๊ฐ ์š”์†Œ๋Š” ํŠน์ • ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ˆœ์„œ๊ฐ€ ์ค‘์š”ํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

์ค‘๋ณต ํ—ˆ์šฉ: ๋ฆฌ์ŠคํŠธ๋Š” ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ€์ง„ ์š”์†Œ๋“ค์„ ์—ฌ๋Ÿฌ ๊ฐœ ํฌํ•จํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ์ ‘๊ทผ ๋ฐ ์กฐ์ž‘์˜ ์œ ์—ฐ์„ฑ: ๋ฆฌ์ŠคํŠธ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€, ์ œ๊ฑฐ, ๊ฒ€์ƒ‰ํ•˜๋Š” ๋“ฑ์˜ ๋‹ค์–‘ํ•œ ์กฐ์ž‘์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ArrayList๋Š” ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰์— ์œ ๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

 

๋‹จ์ 
๋น„ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ: ArrayList๋Š” ํฌ๊ธฐ ์กฐ์ • ์‹œ ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉฐ, LinkedList๋Š” ๊ฐ ์š”์†Œ๋งˆ๋‹ค ์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

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

๋žœ๋ค ์ ‘๊ทผ์˜ ๋น„ํšจ์œจ์„ฑ: LinkedList๋Š” ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋žœ๋ค ์ ‘๊ทผ์ด ๋น„ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค. ํŠน์ • ์ธ๋ฑ์Šค์˜ ์š”์†Œ์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฆฌ์ŠคํŠธ๋ฅผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœํšŒํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

์บ์‹œ ํ™œ์šฉ์˜ ๋น„ํšจ์œจ์„ฑ: LinkedList๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ƒ์˜ ์—ฐ์†์ ์ธ ๊ณต๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, CPU ์บ์‹œ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ํ™œ์šฉํ•˜๊ธฐ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

 

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ํ™•์žฅ

๊ธฐ๋ณธ์ ์ธ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ๋ถˆํŽธํ•จ์„ ํ•ด์†Œํ•˜๊ธฐ ์œ„ํ•œ ํ™•์žฅ ๋ฒ„์ „

1. ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Doubly Linked List)
  • ํŠน์ง•: ๊ฐ ๋…ธ๋“œ๊ฐ€ ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์œผ๋ฉฐ, ํ•˜๋‚˜๋Š” ์ด์ „ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ต๋‹ˆ๋‹ค.
  • ์žฅ์ : ์–‘๋ฐฉํ–ฅ์œผ๋กœ์˜ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ, ํŠน์ • ์ƒํ™ฉ์—์„œ ํƒ์ƒ‰ ํšจ์œจ์ด ๊ฐœ์„ ๋ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ, ๋…ธ๋“œ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋”์šฑ ์œ ์—ฐํ•ด์ง‘๋‹ˆ๋‹ค.
  • ๋‹จ์ : ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค(์ด์ „ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ).
2. ์ˆœํ™˜ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Circular Linked List)
  • ํŠน์ง•: ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํ˜•ํƒœ๋กœ, ๋ฆฌ์ŠคํŠธ์˜ ๋๊ณผ ์‹œ์ž‘์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
  • ์žฅ์ : ๋ฆฌ์ŠคํŠธ์˜ ๋์—์„œ ์‹œ์ž‘์œผ๋กœ์˜ ์ด๋™์ด ๊ฐ„๋‹จํ•ด์ง€๋ฉฐ, ์ˆœํ™˜ ๊ตฌ์กฐ๋ฅผ ํ•„์š”๋กœ ํ•˜๋Š” ํŠน์ • ์•Œ๊ณ ๋ฆฌ์ฆ˜์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ : ์ˆœํ™˜ ๊ตฌ์กฐ๋กœ ์ธํ•ด ๋ฆฌ์ŠคํŠธ์˜ ๋์„ ์‹๋ณ„ํ•˜๋Š” ๊ฒƒ์ด ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
3. ์ •๋ ฌ๋œ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Sorted Linked List)
  • ํŠน์ง•: ๋…ธ๋“œ๋“ค์ด ํŠน์ • ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์œ ์ง€๋˜๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.
  • ์žฅ์ : ํ•ญ์ƒ ์ •๋ ฌ๋œ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•˜๋ฏ€๋กœ, ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ์— ๋Œ€ํ•œ ๋น ๋ฅธ ๊ฒ€์ƒ‰์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ๋‹จ์ : ์‚ฝ์ž… ์—ฐ์‚ฐ์ด ๋” ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ ์ ˆํ•œ ์œ„์น˜๋ฅผ ์ฐพ์•„ ์‚ฝ์ž…ํ•ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.
4. ์ž๊ธฐ ์กฐ์ • ๋ฆฌ์ŠคํŠธ (Self-adjusting Linked List)
  • ํŠน์ง•: ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ๋•Œ๋งˆ๋‹ค ํ•ด๋‹น ๋…ธ๋“œ๋ฅผ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘ ๋ถ€๋ถ„์œผ๋กœ ์ด๋™์‹œํ‚ค๋Š” ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.
  • ์žฅ์ : ์ž์ฃผ ์ ‘๊ทผํ•˜๋Š” ์š”์†Œ์— ๋Œ€ํ•ด ๋น ๋ฅธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
  • ๋‹จ์ : ๋ฐ์ดํ„ฐ ์ ‘๊ทผ ์‹œ ๋งค๋ฒˆ ๋ฆฌ์ŠคํŠธ ๊ตฌ์กฐ๋ฅผ ์กฐ์ •ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

 

์ฐธ๊ณ ์ž๋ฃŒ : ใ€Œ์‰ฝ๊ฒŒ ๋ฐฐ์šฐ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ with ์ž๋ฐ”ใ€