๐Ÿงฌ ์ž๋ฃŒ๊ตฌ์กฐ(1) - array, list, stack, queue, heap, tree, graph..

ํ•ด๋กฑ๊ทธยท2024๋…„ 1์›” 10์ผ
1

CS

๋ชฉ๋ก ๋ณด๊ธฐ
3/4

ํ•„์ˆ˜ ์ž๋ฃŒ๊ตฌ์กฐ 8๊ฐœ

Array, Linked List, Stack, Queue, Hash Table, Graph, Tree, Heap

1. Array List (๋ฐฐ์—ด)

์ž…๋ ฅ๋œ ๋ฐ์ดํ„ฐ๋“ค์ด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—์„œ ์—ฐ์†์ ์œผ๋กœ ์ €์žฅ๋˜์–ด ์žˆ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

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

2. Linked List (์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ)

์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋…ธ๋“œ๋“ค์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ

  • heap
  • ์ฒซ๋ฒˆ์งธ ๋…ธ๋“œ๋ฅผ head, ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ tail ์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ฐ ๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ํฌ์ธํ„ฐ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค.
  • ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์—ฐ์†์ ์œผ๋กœ ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค. (์ˆœ์„œ X)
  • ๋ฐฐ์—ด๊ณผ๋Š” ๋‹ค๋ฅด๊ฒŒ ์ˆœ์ฐจ์ ์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š” ๋ฉด์—์„œ ๋ถˆ๋ฆฌํ•  ์ˆ˜๋„ ์žˆ์œผ๋‚˜, ๋…ธ๋“œ๊ฐ€ ์—ฐ๊ฒฐ๋œ ๊ตฌ์กฐ์ด๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…, ์‚ญ์ œ์— ์šฉ์ดํ•˜๋‹ค.
  • Tree ๊ตฌ์กฐ์˜ ๊ทผ๊ฐ„์ด ๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ด๋ฉฐ, Tree์—์„œ ์‚ฌ์šฉ๋˜์—ˆ์„ ๋•Œ ๊ทธ ์œ ์šฉ์„ฑ์ด ๋“œ๋Ÿฌ๋‚œ๋‹ค.
  • ์‹œ๊ฐ„ ๋ณต์žก๋„
    • ํƒ์ƒ‰
      • O(n) (์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœํšŒํ•ด์•ผํ•˜๋ฏ€๋กœ์ฟ ํ‚ค..)
    • ์‚ฝ์ž…/์‚ญ์ œ โ†’ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์ž์ฒด๋Š” O(1)..
      • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์ฒ˜์Œ์— ์‚ฝ์ž…/์‚ญ์ œ: O(1)
      • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์ค‘๊ฐ„์— ์‚ฝ์ž…/์‚ญ์ œ: O(n) โ†’ ํƒ์ƒ‰ ์‹œ๊ฐ„ ์†Œ์š”
      • ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ๋์— ์‚ฝ์ž…/์‚ญ์ œ
        • ๋์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ„๋„์˜ ํฌ์ธํ„ฐ(tail)๋ฅผ ๊ฐ–๋Š” ๊ฒฝ์šฐ: O(1)
        • ๋์„ ๊ฐ€๋ฆฌํ‚ค๋Š” ๋ณ„๋„์˜ ํฌ์ธํ„ฐ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ: O(n) โ†’ ํƒ์ƒ‰ ์‹œ๊ฐ„ ์†Œ์š”

+ ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ (Doubly Linked List)

์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์™€ ๋‹ค๋ฅด๊ฒŒ prev, next node๋ฅผ ๋ชจ๋‘ ๊ฐ€์ง€๊ณ  ์žˆ์–ด ์ „/ํ›„๋กœ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•œ ์ž๋ฃŒ๊ตฌ์กฐ

  • ์žฅ์ : ๋‹จ์ˆœ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ์ตœ์•…์˜ ๊ฒฝ์šฐ n๋ฒˆ์„ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜์ง€๋งŒ, ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์—์„œ๋Š” ์–ป๊ณ ์ž ํ•˜๋Š” ๋ฐ์ดํ„ฐ์˜ ์œ„์น˜๊ฐ€ tail์— ๊ฐ€๊น๋‹ค๋ฉด ์—ญ๋ฐฉํ–ฅ์œผ๋กœ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์— (prev ํƒ€๊ณ ..ํƒ€๊ณ ..) ํƒ์ƒ‰ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.

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

๋ฐฐ์—ด์˜ ์žฅ๋‹จ์ 

  • ์žฅ์ 
    • ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ๋น ๋ฅธ ์ ‘๊ทผ ๊ฐ€๋Šฅ
  • ๋‹จ์ 
    • ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ์˜ค๋ž˜ ๊ฑธ๋ฆผ โ†’ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ์˜ ์ธ๋ฑ์Šค๋ฅผ ๋ชจ๋‘ ์ด๋™์‹œ์ผœ์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์—..
    • ๋ฐฐ์—ด ์ค‘๊ฐ„์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์‚ญ์ œ๋˜๋ฉด ๊ณต๊ฐ„ ๋‚ญ๋น„๊ฐ€ ๋ฐœ์ƒํ•จ
  • ์šฉ๋„
    • ๋น ๋ฅธ ์ ‘๊ทผ ์š”๊ตฌ + ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…, ์‚ญ์ œ ์ ์„ ๋•Œ

์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ์˜ ์žฅ๋‹จ์ 

  • ์žฅ์ 
    • next node๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์‹œ ์šฉ์ดํ•จ
  • ๋‹จ์ 
    • ๋ณ„๋„์˜ ์ธ๋ฑ์Šค๊ฐ€ ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ž„์˜ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜์—ฌ ์ฒ˜์Œ๋ถ€ํ„ฐ ํƒ์ƒ‰์„ ์ง„ํ–‰ํ•ด์•ผ ํ•จ โ†’ ํƒ์ƒ‰ ์‹œ๊ฐ„ ์†Œ์š”
  • ์šฉ๋„
    • ์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์—ฐ์‚ฐ์ด ์žฆ์Œ + ๊ฒ€์ƒ‰ ๋นˆ๋„๊ฐ€ ์ ์„ ๋•Œ

3. Stack (์Šคํƒ)

์ˆœ์„œ๊ฐ€ ๋ณด์กด๋˜๋Š” ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ

  • LIFO(Last In First Out) ๊ตฌ์กฐ
  • ํ•จ์ˆ˜ ํ˜ธ์ถœ ๋“ฑ ์Šคํƒ ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์กฐ์— ์‚ฌ์šฉ๋œ๋‹ค.
  • ๊ฐ™์€ ๊ตฌ์กฐ์˜ ๊ฐ™์€ ํฌ๊ธฐ์˜ ์ž๋ฃŒ๋ฅผ ์ •ํ•ด์ง„ ๋ฐฉํ–ฅ์œผ๋กœ๋งŒ ์Œ“์„ ์ˆ˜ ์žˆ๋‹ค.
  • top์œผ๋กœ ์ •ํ•œ ๊ณณ์„ ํ†ตํ•ด์„œ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
    ์Šคํƒ์˜ top์€ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰์— ์Œ“์ธ data ์œ„์น˜!!!!
  • ์‚ญ์ œ๋Š” top์„ ํ†ตํ•ด์„œ๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค.
  • push๋‚˜ pop์„ ํ•  ๋•Œ ํ•ด๋‹น ๊ฐ’์˜ ์œ„์น˜๋ฅผ ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•˜๋Š”๋ฐ, ์Šคํƒ ํฌ์ธํ„ฐ(sp)๊ฐ€ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค. ์ฒ˜์Œ ๊ธฐ๋ณธ ๊ฐ’์€ -1
  • ์Šคํƒ์˜ ํ™œ์šฉ ์˜ˆ์‹œ
    • ์›น ๋ธŒ๋ผ์šฐ์ € ๋ฐฉ๋ฌธ๊ธฐ๋ก (๋’ค๋กœ๊ฐ€๊ธฐ): ๊ฐ€์žฅ ๋‚˜์ค‘์— ์—ด๋ฆฐ ํŽ˜์ด์ง€๋ถ€ํ„ฐ ๋‹ค์‹œ ๋ณด์—ฌ์คŒ
    • ์—ญ์ˆœ ๋ฌธ์ž์—ด ๋งŒ๋“ค๊ธฐ: ๊ฐ€์žฅ ๋‚˜์ค‘์— ์ž…๋ ฅ๋œ ๋ฌธ์ž๋ถ€ํ„ฐ ์ถœ๋ ฅ
    • ์‹คํ–‰ ์ทจ์†Œ (undo): ๊ฐ€์žฅ ๋‚˜์ค‘์— ์‹คํ–‰๋œ ๊ฒƒ๋ถ€ํ„ฐ ์‹คํ–‰ ์ทจ์†Œ
    • ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ• ๊ณ„์‚ฐ
    • ์žฌ๊ท€ ํ•จ์ˆ˜(recursive call)

4. Queue (ํ)

์ˆœ์„œ๊ฐ€ ๋ณด์กด๋˜๋Š” ์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ

  • FIFO(First In First Out) ๊ตฌ์กฐ
  • Java Collection์—์„œ Queue๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋‹ค.
  • ๊ฐ€์žฅ ์ฒซ ์›์†Œ๋ฅผ front, ๋ ์›์†Œ๋ฅผ rear๋ผ๊ณ  ํ•œ๋‹ค.
  • front์™€ rear๋กœ๋งŒ ์ ‘๊ทผ ๊ฐ€๋Šฅ
    • ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ๊ณ  ๋บ„ ๋•Œ ํ•ด๋‹น ๊ฐ’์˜ ์œ„์น˜๋ฅผ ๊ธฐ์–ตํ•ด์•ผ ํ•จ(์Šคํƒ ํฌ์ธํ„ฐ์™€ ๊ฐ™์€ ์—ญํ• )
  • ํ์˜ ํ™œ์šฉ ์˜ˆ์‹œ
    • ๋Œ€๊ธฐ ๋ฒˆํ˜ธํ‘œ
    • ๋ฌผํ’ˆ ์ง„์—ด
    • BFS ๊ตฌํ˜„
    • ํ”„๋ฆฐํ„ฐ ์ถœ๋ ฅ ์ฒ˜๋ฆฌ
    • ์ฝœ์„ผํ„ฐ ๊ณ ๊ฐ ๋Œ€๊ธฐ์‹œ๊ฐ„

5. Heap (ํž™)

์™„์ „ ์ด์ง„ํŠธ๋ฆฌ(Binary Tree)์˜ ์ผ์ข…

  • ์—ฌ๋Ÿฌ ๊ฐ’ ์ค‘ ์ตœ๋Œ€๊ฐ’๊ณผ ์ตœ์†Œ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ์ฐพ์•„๋‚ด๋„๋ก ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ ๊ตฌ์กฐ
  • ์šฐ์„ ์ˆœ์œ„ ํ๋ฅผ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ์ž๋ฃŒ๊ตฌ์กฐ
    • ์šฐ์„ ์ˆœ์œ„ ํ?
      • ๋ฐ์ดํ„ฐ๋“ค์ด ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ๊ณ , ์šฐ์„ ์ˆœ์œ„๊ฐ€ ๋†’์€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์‚ญ์ œ!
      • CPU ์ž‘์—… ์Šค์ผ€์ค„๋ง, ์‹œ๋ฎฌ๋ ˆ์ด์…˜ ์‹œ์Šคํ…œ์—์„œ ์‚ฌ์šฉ
  • ์‹œ๊ฐ„๋ณต์žก๋„: O(logn)
  • ํž™์„ ์ €์žฅํ•˜๋Š” ํ‘œ์ค€์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ฐฐ์—ด
  • ์ค‘๋ณต ๊ฐ’์„ ํ—ˆ์šฉํ•œ๋‹ค.
  • ๋ฐ˜ ์ •๋ ฌ ์ƒํƒœ๋ฅผ ์œ ์ง€ํ•œ๋‹ค.
  • ํž™ ์ข…๋ฅ˜
    • ์ตœ๋Œ€ ํž™(max heap)
      • ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ
      • ๋ถ€๋ชจ key โ‰ฅ ์ž์‹ key
    • ์ตœ์†Œ ํž™(min heap)
      • ๋ถ€๋ชจ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’์ด ์ž์‹ ๋…ธ๋“œ์˜ ํ‚ค ๊ฐ’๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ
      • ๋ถ€๋ชจ key โ‰ค ์ž์‹ key
  • ํž™ ์—ฐ์‚ฐ
    • ์‚ฝ์ž…
      • ํž™์— ์ƒˆ๋กœ์šด ์š”์†Œ๊ฐ€ ๋“ค์–ด์˜ค๋ฉด, ์ผ๋‹จ ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ํž™์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์— ์‚ฝ์ž…
      • ์ƒˆ๋กœ์šด ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ ๋…ธ๋“œ๋“ค๊ณผ ๊ตํ™˜
    • ์‚ญ์ œ
      • ์ตœ๋Œ€ ํž™์—์„œ ์ตœ๋Œ“๊ฐ’์€ ๋ฃจํŠธ ๋…ธ๋“œ์ด๋ฏ€๋กœ ๋ฃจํŠธ ๋…ธ๋“œ๊ฐ€ ์‚ญ์ œ๋จ
        (์ตœ๋Œ€ ํž™์—์„œ ์‚ญ์ œ ์—ฐ์‚ฐ์€ ์ตœ๋Œ€๊ฐ’ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฒƒ!)
      • ์‚ญ์ œ๋œ ๋ฃจํŠธ ๋…ธ๋“œ์—๋Š” ํž™์˜ ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ด
      • ํž™์„ ์žฌ๊ตฌ์„ฑํ•จ

6. Tree (ํŠธ๋ฆฌ)

๋…ธ๋“œ๋“ค์ด ๋‚˜๋ฌด ๊ฐ€์ง€์ฒ˜๋Ÿผ ์—ฐ๊ฒฐ๋œ ๋น„์„ ํ˜• ๊ณ„์ธต์  ์ž๋ฃŒ๊ตฌ์กฐ.
= ๊ทธ๋ž˜ํ”„๊ฐ€ ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ๊ฐ€์ง„ ํ˜•ํƒœ

  • ์‚ฌ์‹ค ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์ด๋‹ค.
  • ํŠธ๋ฆฌ ๋‚ด์— ๋‹ค๋ฅธ ํ•˜์œ„ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๊ณ , ๊ทธ ํ•˜์œ„ ํŠธ๋ฆฌ ์•ˆ์— ๋˜ ๋‹ค๋ฅธ ํ•˜์œ„ ํŠธ๋ฆฌ๊ฐ€ ์žˆ๋Š” ์žฌ๊ท€์  ์ž๋ฃŒ๊ตฌ์กฐ์ด๋‹ค.
  • ๋‹จ์ˆœ ์ˆœํ™˜(loop)๋ฅผ ๊ฐ€์ง€์ง€ ์•Š๊ณ , ์—ฐ๊ฒฐ๋œ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„ ๊ตฌ์กฐ์ด๋‹ค.
  • ์ตœ์ƒ์œ„ ๋…ธ๋“œ(๋ฃจํŠธ)๋ฅผ ๊ฐ€์ง„๋‹ค
  • ์ƒ์œ„ ๋…ธ๋“œ๋ฅผ ๋ถ€๋ชจ(parent)๋…ธ๋“œ, ํ•˜์œ„ ๋…ธ๋“œ๋ฅผ ์ž์‹(child)๋…ธ๋“œ๋ผ ํ•œ๋‹ค.
    • ์žฅ์ : ๋ฐ์ดํ„ฐ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ๋‹จ์ : ์‚ฝ์ž…, ์‚ญ์ œ ์‹œ ๋งŽ์€ ์ˆ˜์˜ ๋…ธ๋“œ๋ฅผ ์ด๋™ํ•ด์•ผํ•˜๊ธฐ์— ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
  • ํŠธ๋ฆฌ์˜ ํ™œ์šฉ ์˜ˆ์‹œ
    • ์ปดํ“จํ„ฐ์˜ directory ๊ตฌ์กฐ
    • ํž™๋„ ํŠธ๋ฆฌ๋กœ ๋œ ์ž๋ฃŒ๊ตฌ์กฐ
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ธ๋ฑ์‹ฑ
      ex) B-Tree, B+Tree, AVL-Tree..
    • Trie: ์‚ฌ์ „, ์ „ํ™”๋ฒˆํ˜ธ๋ถ€?

7. Graph (๊ทธ๋ž˜ํ”„)

์ •์ (Node or Vertext)๊ณผ ๊ฐ์ฒด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ (Edge)์œผ๋กœ ์ด๋ฃจ์–ด์ง„ ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ

  • ๊ทธ๋ž˜ํ”„ G๋ฅผ G=(V,E)๋กœ ์ •์˜ํ•˜๋Š”๋ฐ, V๋Š” ์ •์ ์˜ ์ง‘ํ•ฉ, E๋Š” ๊ฐ„์„ ๋“ค์˜ ์ง‘ํ•ฉ์„ ์˜๋ฏธํ•œ๋‹ค.
  • ํŠธ๋ฆฌ๋Š” ๊ทธ๋ž˜ํ”„์˜ ์ผ์ข…์ด์ง€๋งŒ ๊ทธ๋ž˜ํ”„๋Š” ํŠธ๋ฆฌ์™€ ๋‹ฌ๋ฆฌ ์ •์ ๋งˆ๋‹ค ๊ฐ„์„ ์ด ์กด์žฌํ•˜์ง€ ์•Š์„ ์ˆ˜๋„ ์žˆ์œผ๋ฉฐ, ๋ฃจํŠธ ๋…ธ๋“œ์™€ ๋ถ€๋ชจ ๋…ธ๋“œ, ์ž์‹ ๋…ธ๋“œ์˜ ๊ฐœ๋…์ด ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๊ทธ๋ž˜ํ”„์˜ ํ™œ์šฉ ์˜ˆ์‹œ
    • ์ง€ํ•˜์ฒ  ๋…ธ์„ ๋„ ์ตœ๋‹จ ๊ฒฝ๋กœ
    • ๋„๋กœ
    • ์„ ์ˆ˜ ๊ณผ๋ชฉ

๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•

๊ทธ๋ž˜ํ”„๋Š” ์ธ์ ‘ ํ–‰๋ ฌ ๋˜๋Š” ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ ๋กœ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

1. ์ธ์ ‘ ํ–‰๋ ฌ
์ธ์ ‘ ํ–‰๋ ฌ์ด๋ž€ ๊ทธ๋ž˜ํ”„์˜ ์ •์ ์„ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ๋งŒ๋“  ๊ฒƒ์ด๋‹ค.
์ •์  ๊ฐ„์— ์ง์ ‘ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค๋ฉด 1 , ์•„๋‹ˆ๋ผ๋ฉด 0 ์„ ์ €์žฅํ•œ๋‹ค.

์žฅ์ 

  • 2์ฐจ์› ๋ฐฐ์—ด์— ๋ชจ๋“  ์ •์ ์˜ ๊ฐ„์„  ์ •๋ณด๊ฐ€ ๋‹ด๊ฒจ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ์ •์ ์— ๋Œ€ํ•œ ์—ฐ๊ฒฐ์„ ์กฐํšŒํ•  ๋•Œ๋Š” O(1)O(1) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ์— ๋น„ํ•ด ๊ตฌํ˜„์ด ์‰ฝ๋‹ค.

๋‹จ์ 

  • ๋ชจ๋“  ์ •์ ์— ๋Œ€ํ•ด ๊ฐ„์„  ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ธ์ ‘ ํ–‰๋ ฌ์„ ์ƒ์„ฑํ•  ๋•Œ๋Š” O(n2)O(n2) ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์†Œ์š”๋œ๋‹ค.
  • ํ•ญ์ƒ 2์ฐจ์› ๋ฐฐ์—ด์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ํ•„์š” ์ด์ƒ์˜ ๊ณต๊ฐ„์ด ๋‚ญ๋น„๋œ๋‹ค.

2. ์ธ์ ‘ ๋ฆฌ์ŠคํŠธ
์ธ์ ‘ ๋ฆฌ์ŠคํŠธ๋Š” ๊ทธ๋ž˜ํ”„์˜ ๋…ธ๋“œ๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์ด๋‹ค. ์ฃผ๋กœ ์ •์ ์˜ ๋ฆฌ์ŠคํŠธ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ๊ด€๊ณ„๋ฅผ ์„ค์ •ํ•œ๋‹ค.

์žฅ์ 

  • ์ •์ ๋“ค์˜ ์—ฐ๊ฒฐ ์ •๋ณด๋ฅผ ํƒ์ƒ‰ํ•  ๋•Œ O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์†Œ์š”๋œ๋‹ค. (n ์€ ๊ฐ„์„ ์˜ ๊ฐฏ์ˆ˜)
  • ํ•„์š”ํ•œ ๋งŒํผ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ธ์ ‘ ํ–‰๋ ฌ์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ๊ณต๊ฐ„์˜ ๋‚ญ๋น„๊ฐ€ ์ ๋‹ค.

๋‹จ์ 

  • ํŠน์ • ๋‘ ์ •์ ์ด ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ธ์ ‘ ํ–‰๋ ฌ์— ๋น„ํ•ด ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆฐ๋‹ค.
  • ๊ตฌํ˜„์ด ์ธ์ ‘ ํ–‰๋ ฌ์— ๋น„ํ•ด ์–ด๋ ต๋‹ค.

๊ทธ๋ž˜ํ”„ ํƒ์ƒ‰
1. ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ (DFS)
๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๋งŒํผ ์ตœ๋Œ€ํ•œ ๊นŠ์ด ๊ฐ€๊ณ , ๋” ์ด์ƒ ๊ฐˆ ๊ณณ์ด ์—†๋‹ค๋ฉด ์ด์ „ ์ •์ ์œผ๋กœ ๋Œ์•„๊ฐ€๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ทธ๋ž˜ํ”„๋ฅผ ์ˆœํšŒํ•œ๋‹ค.
์ฃผ๋กœ ์žฌ๊ท€ ํ˜ธ์ถœ๊ณผ ์Šคํƒ์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ๋‹ค.

2. ๋„ˆ๋น„ ์šฐ์„  ํƒ์ƒ‰ (BFS)
์‹œ์ž‘ ์ •์ ์„ ๋ฐฉ๋ฌธํ•œ ํ›„, ์‹œ์ž‘ ์ •์ ์— ์ธ์ ‘ํ•œ ๋ชจ๋“  ์ •์ ์„ ๋ฐฉ๋ฌธํ•œ๋‹ค.
์ธ์ ‘ํ•œ ์ •์ ์„ ๋ฐฉ๋ฌธํ•œ ๋’ค, ๋‹ค์‹œ ํ•ด๋‹น ์ •์ ์˜ ์ธ์ ‘ํ•œ ์ •์ ์„ ๋ฐฉ๋ฌธํ•˜๋ฉฐ ๊ทธ๋ž˜ํ”„๋ฅผ ์ˆœํšŒํ•œ๋‹ค.
์ฃผ๋กœ ํ์™€ ๋ฐ˜๋ณต๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๊ตฌํ˜„ํ•œ๋‹ค.


8. Hash Table (ํ•ด์‹œ ํ…Œ์ด๋ธ”)

(key, value)๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ

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

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