์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์™„๋ฒฝ ์ •๋ฆฌ (์ถœ์ œ๋นˆ๋„: ์ƒ)

์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ณธ ๊ฐœ๋…

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

  • ๋…ผ๋ฆฌ์ ์œผ๋กœ ์„ค๊ณ„๋œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ
  • ๊ตฌ์กฐ์ ์œผ๋กœ ๋ชจ์—ฌ์žˆ๋Š” ๋ฐ์ดํ„ฐ์˜ ์ง‘ํ•ฉ
  • ๋ฐ์ดํ„ฐ ์œ ํ˜•๊ณผ ์—…๋ฌด ์ƒํ™ฉ์— ๋”ฐ๋ผ ์„ ํƒํ•ด์„œ ํ™œ์šฉ

์ž๋ฃŒ๊ตฌ์กฐ์˜ ํŠน์ง•

  • ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๊ตฌ์„ฑ ๋ฐฉ์‹์ด ์„ฑ๋Šฅ์— ์ง์ ‘์ ์ธ ์˜ํ–ฅ์„ ๋ฏธ์นจ
  • ๋ฐ์ดํ„ฐ ์šฉ๋Ÿ‰๊ณผ ์‹คํ–‰์‹œ๊ฐ„์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ฒƒ์ด ๋ชฉํ‘œ
  • ์ถ”๊ฐ€, ์‚ญ์ œ, ํƒ์ƒ‰์„ ํšจ์œจ์ ์œผ๋กœ ์—ฐ์‚ฐํ•˜๋„๋ก ์„ค๊ณ„ ํ•„์š”

์ž๋ฃŒ๊ตฌ์กฐ์˜ ์œ ํ˜•

1. ๋‹จ์ˆœ๊ตฌ์กฐ

  • ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์žฅํ•˜์—ฌ ์ž๋ฃŒ๊ตฌ์กฐ ๊ตฌ์„ฑ

2. ์„ ํ˜•๊ตฌ์กฐ

  • ๋ฐ์ดํ„ฐ ๊ฐ„ 1:1 ๋Œ€์‘ ๊ด€๊ณ„๋กœ ๊ตฌ์„ฑ
  • ๊ตฌ๋ถ„:
    • ์ˆœ์ฐจ๊ตฌ์กฐ: ํƒ์ƒ‰์†๋„ ์šฐ์„ 
    • ์—ฐ๊ฒฐ๊ตฌ์กฐ: ์ด๋™(์‚ฝ์ž…, ์‚ญ์ œ) ์†๋„ ์šฐ์„ 
  • ์ข…๋ฅ˜: ์Šคํƒ, ํ, ๋ฐํฌ, ์„ ํ˜• ๋ฆฌ์ŠคํŠธ, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ

3. ๋น„์„ ํ˜•๊ตฌ์กฐ

  • 1:N, N:M ๊ตฌ์กฐ
  • ์ข…๋ฅ˜: ํŠธ๋ฆฌ, ๊ทธ๋ž˜ํ”„

4. ํŒŒ์ผ๊ตฌ์กฐ

  • ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ธฐ๋ก ์‹œ ํ™œ์šฉ
  • ์ข…๋ฅ˜: ์ˆœ์ฐจ ํŒŒ์ผ, ์ง์ ‘ ํŒŒ์ผ, ์ƒ‰์ธ ์ˆœ์ฐจ ํŒŒ์ผ

์•Œ๊ณ ๋ฆฌ์ฆ˜

์ •์˜

  • ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ํšจ์œจ์ ์ธ ํ•ด๋ฒ•
  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ + ๋ฐ์ดํ„ฐ๊ตฌ์กฐ = ํ”„๋กœ๊ทธ๋žจ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์›์น™

  1. ์ถœ๋ ฅ์€ ๋ฐ˜๋“œ์‹œ 1๊ฐœ ์ด์ƒ ์กด์žฌ
  2. ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ๋ช…ํ™•ํ•œ ์˜๋ฏธ์™€ ์™„๋ฒฝํ•œ ๊ตฌ์„ฑ์„ ๊ฐ€์ง
  3. ๋ชจ๋“  ๊ธฐ๋Šฅ์€ ์ •ํ•ด์ง„ ํšŸ์ˆ˜๋งŒํผ ๋ฐ˜๋ณต๋˜๋ฉฐ ์‹ค์ œ ์—ฐ์‚ฐ ๊ฐ€๋Šฅํ•ด์•ผ ํ•จ

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ฑ๋Šฅ ํŒ๋‹จ ๊ธฐ์ค€

  • ์ •ํ™•์„ฑ
  • ๋ช…ํ™•์„ฑ
  • ์ˆ˜ํ–‰๋Ÿ‰(์—ฐ์‚ฐ์˜ ์ˆ˜ํ–‰ ํšŸ์ˆ˜)
  • ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ‘œํ˜„ ๋ฐฉ๋ฒ•

  1. ์ˆœ์„œ๋„(Flow Chart)
    • ๋„ํ˜•๊ณผ ๊ธฐํ˜ธ๋กœ ํ‘œํ˜„
  2. ์˜์‚ฌ์ฝ”๋“œ(Pseudo Code)
    • ์ผ๋ฐ˜์ ์ธ ์–ธ์–ด๋กœ ์ฝ”๋“œ์™€ ์œ ์‚ฌํ•˜๊ฒŒ ํ‘œํ˜„

์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„ ๊ธฐ๋ฒ•

  1. ๋™์  ๊ณ„ํš๋ฒ•
    • ์ž‘์€ ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ๋ฒ•์„ ํ™œ์šฉํ•˜์—ฌ ํฐ ๋ฌธ์ œ ํ•ด๊ฒฐ
  2. ํƒ์š•์  ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๊ฐ ๋ถ„๊ธฐ์—์„œ ์ตœ์ ์˜ ํ•ด ์„ ํƒ
    • ์ „์ฒด์ ์ธ ์ตœ์ ํ•ด๋ฅผ ๋ณด์žฅํ•˜์ง€๋Š” ์•Š์Œ
  3. ์žฌ๊ท€์  ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋™์ผํ•œ ํ’€์ด๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ˜ธ์ถœ
  4. ๊ทผ์‚ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜
    • ๋น ๋ฅธ ๊ณ„์‚ฐ์„ ์œ„ํ•ด ๊ทผ์‚ฌ ํ•ด๋ฒ• ์ˆ˜ํ–‰
  5. ๋ถ„ํ•  ์ •๋ณต๋ฒ•
    • ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•˜์—ฌ ํ•ด๊ฒฐ
  6. ํ‡ด๊ฐ ๊ฒ€์ƒ‰๋ฒ•
    • ํƒ์ƒ‰ ์‹คํŒจ ์‹œ ์ด์ „ ์„ฑ๊ณต ๋ถ„๊ธฐ๋กœ ๋˜๋Œ์•„๊ฐ€๋Š” ๋ฐฉ์‹
    • ์˜ˆ์‹œ: ๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜(DFS)

์„ ํ˜•๊ตฌ์กฐ ์ƒ์„ธ ์„ค๋ช…

์Šคํƒ(Stack)

  • ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์ด ํ•œ์ชฝ์—์„œ๋งŒ ๋ฐœ์ƒ
  • ํŠน์ง•: ํ›„์ž…์„ ์ถœ(LIFO: Last In First Out)
  • ์ฃผ์š” ๊ฐœ๋…:
    • ์Šคํƒ ํฌ์ธํ„ฐ(TOP): ์œ„์น˜ ์ •๋ณด ์ €์žฅ
    • PUSH(์‚ฝ์ž…): Overflow ๋ฐœ์ƒ ๊ฐ€๋Šฅ
    • POP(์ถ”์ถœ): Underflow ๋ฐœ์ƒ ๊ฐ€๋Šฅ
  • ํ™œ์šฉ: 0 ์ฃผ์†Œ ๋ช…๋ น์–ด ๋ฐฉ์‹

์ˆ˜์‹ ํ‘œ๊ธฐ๋ฒ•

  • ์ „์œ„์‹: +AB
  • ์ค‘์œ„์‹: A+B
  • ํ›„์œ„์‹: AB+

์˜ˆ์‹œ: (A-B)*C+D

์ „์œ„์‹ ๋ณ€ํ™˜: -AB โ†’ *-ABC โ†’ +*-ABCD
ํ›„์œ„์‹ ๋ณ€ํ™˜: AB- โ†’ AB-C* โ†’ AB-C*D+

ํ(Queue)

  • ๋ฐ์ดํ„ฐ ์ž…์ถœ๋ ฅ์ด ๋ฐ˜๋Œ€์ชฝ์—์„œ ๋ฐœ์ƒ
  • ํŠน์ง•: ์„ ์ž…์„ ์ถœ(FIFO: First In First Out)
  • ํฌ์ธํ„ฐ:
    • Rear(์‚ฝ์ž…): ๋งˆ์ง€๋ง‰ ์‚ฝ์ž… ๋ฐ์ดํ„ฐ ์œ„์น˜
    • Front(์‚ญ์ œ): ์ฒ˜์Œ ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ ์œ„์น˜
  • ์ดˆ๊ธฐ๊ฐ’: -1
  • ํ™œ์šฉ: ๋Œ€๊ธฐํ–‰๋ ฌ ์ฒ˜๋ฆฌ

๋ฐํฌ(Deque)

  • ์ž…์ถœ๋ ฅ์ด ์–‘์ชฝ์—์„œ ๊ฐ€๋Šฅํ•œ ์–‘๋ฐฉํ–ฅ ํ
  • ํฌ์ธํ„ฐ: Left, Right
  • ์ž…๋ ฅ๋ฐฉ์‹: ์Šคํฌ๋กค ๋ฐฉ์‹
  • ์ถœ๋ ฅ๋ฐฉ์‹: ์‰˜ํ”„ ๋ฐฉ์‹

์„ ํ˜•๋ฆฌ์ŠคํŠธ

  • ํŠน์ง•:
    • ์—ฐ์†๋œ ๊ณต๊ฐ„์— ์ €์žฅ
    • ๋น ๋ฅธ ์ ‘๊ทผ ์†๋„
    • ๋А๋ฆฐ ์‚ฝ์ž…/์‚ญ์ œ ์†๋„
  • ๋Œ€ํ‘œ์œ ํ˜•: ๋ฐฐ์—ด
  • ๋ฐฐ์—ด ํŠน์ง•:
    • ์—ฐ์†์  ๋ฐ์ดํ„ฐ ๋‚˜์—ด
    • Index๋กœ ์œ„์น˜ ๊ตฌ๋ถ„
    • ๊ณ ์ • ํฌ๊ธฐ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
    • ๋…ผ๋ฆฌ์ /๋ฌผ๋ฆฌ์  ์ˆœ์„œ ๋™์ผ
  • ์—ฐ์‚ฐ ํšจ์œจ:
    • ์ถ”๊ฐ€ ํ‰๊ท ์ด๋™: (N+1)/2
    • ์‚ญ์ œ ํ‰๊ท ์ด๋™: (N-1)/2

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

  • ๊ตฌ์„ฑ: ๋…ธ๋“œ(๋ฐ์ดํ„ฐ + ํฌ์ธํ„ฐ)
  • ์ข…๋ฅ˜:
    1. ๋‹จ์ผ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
      • ๋‹จ์ผ ํฌ์ธํ„ฐ๋กœ ๋‹ค์Œ ์œ„์น˜ ์ฐธ์กฐ
      • ๋งˆ์ง€๋ง‰ ํฌ์ธํ„ฐ๋Š” Null
      • ์ฒซ ๋…ธ๋“œ๋ถ€ํ„ฐ ํƒ์ƒ‰
    2. ๋‹จ์ผ ์›ํ˜• ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
      • ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ๊ฐ€ ์ฒซ ๋…ธ๋“œ ์ฐธ์กฐ
      • ์ˆœํ™˜ ํƒ์ƒ‰ ๊ฐ€๋Šฅ
    3. ์ด์ค‘ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
      • ์ „/ํ›„ ๋…ธ๋“œ ์œ„์น˜ ์ฐธ์กฐ
      • ์–‘๋ฐฉํ–ฅ ํƒ์ƒ‰ ๊ฐ€๋Šฅ
      • ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๊ฐ€๋Šฅ
    4. ์ด์ค‘ ์›ํ˜• ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ
      • ์–‘๋ฐฉํ–ฅ ํƒ์ƒ‰
      • ์ˆœํ™˜ ๊ตฌ์กฐ
      • ๋ฐ์ดํ„ฐ ๋ณต๊ตฌ ๊ฐ€๋Šฅ

๋น„์„ ํ˜•๊ตฌ์กฐ ์ƒ์„ธ ์„ค๋ช…

ํŠธ๋ฆฌ(Tree)

alt text

  • 1:N ๊ณ„์ธต ๊ตฌ์กฐ
  • ํŠน์ง•:
    • ๊ฐ„์„ (Edge, Branch)์œผ๋กœ ์—ฐ๊ฒฐ
    • N๊ฐœ ๋…ธ๋“œ ํŠธ๋ฆฌ์˜ ๊ฐ„์„  ์ˆ˜: N-1
    • ๋ฐฉํ–ฅ์„ฑ ์žˆ๋Š” ๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„

์ฃผ์š” ์šฉ์–ด

  • ๊ทผ(Root) ๋…ธ๋“œ
  • ๋‹จ๋ง(Leaf) ๋…ธ๋“œ
  • ๋‚ด๋ถ€(Internal) ๋…ธ๋“œ
  • ํ˜•์ œ(Sibling) ๋…ธ๋“œ

๊ตฌ์กฐ ๊ด€๋ จ ์šฉ์–ด

alt text

  • ๋…ธ๋“œ์˜ ํฌ๊ธฐ
  • ๋…ธ๋“œ์˜ ๊นŠ์ด
  • ๋…ธ๋“œ์˜ ๋†’์ด
  • ํŠธ๋ฆฌ์˜ ๋†’์ด
  • ๋…ธ๋“œ์˜ ๋ ˆ๋ฒจ
  • ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜
  • ํŠธ๋ฆฌ์˜ ์ฐจ์ˆ˜

์ด์ง„ํŠธ๋ฆฌ ์ข…๋ฅ˜

alt text

  1. ์ „ ์ด์ง„ํŠธ๋ฆฌ
    • ํ˜•์ œ๋…ธ๋“œ๊ฐ€ 0๊ฐœ ๋˜๋Š” 2๊ฐœ
  2. ์™„์ „ ์ด์ง„ํŠธ๋ฆฌ
    • ๋งˆ์ง€๋ง‰ ๋ ˆ๋ฒจ ์ œ์™ธ ๋ชจ๋“  ํ˜•์ œ๋…ธ๋“œ๊ฐ€ 2๊ฐœ
    • ์ˆœ์„œ๋Œ€๋กœ ์ฑ„์›Œ์ง„ ๊ตฌ์กฐ
  3. ํฌํ™” ์ด์ง„ํŠธ๋ฆฌ
    • ๋ชจ๋“  ํ˜•์ œ๋…ธ๋“œ๊ฐ€ 2๊ฐœ

ํŠธ๋ฆฌ ์ˆœํšŒ ๋ฐฉ์‹

alt text

  1. ์ค‘์œ„ ์ˆœํšŒ
    • ์ขŒ์ธก์ž์‹ โ†’ ๋ถ€๋ชจ โ†’ ์šฐ์ธก์ž์‹
    • G -> D -> H -> B -> E -> A -> F -> C
  2. ์ „์œ„ ์ˆœํšŒ
    • ๋ถ€๋ชจ โ†’ ์ขŒ์ธก์ž์‹ โ†’ ์šฐ์ธก์ž์‹
    • A -> B -> D -> G -> H -> E -> C -> F
  3. ํ›„์œ„ ์ˆœํšŒ
    • ์ขŒ์ธก์ž์‹ โ†’ ์šฐ์ธก์ž์‹ โ†’ ๋ถ€๋ชจ
    • G -> H -> D -> E -> B -> F -> C -> A

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

  • N:M ๋‹ค๋Œ€๋‹ค ๊ตฌ์กฐ
  • ํŠน์ง•:
    • ๋‹ค์ค‘ ๊ฒฝ๋กœ ์„ค์ • ๊ฐ€๋Šฅ
    • ๋…๋ฆฝ๋œ ๋ถ€๋ถ„ ๊ทธ๋ž˜ํ”„ ๊ตฌ์„ฑ ๊ฐ€๋Šฅ
    • ์ˆœํ™˜ ๊ฐ€๋Šฅ

๊ทธ๋ž˜ํ”„ ์ข…๋ฅ˜

  • ๋ฐฉํ–ฅ์„ฑ: ๋ฐฉํ–ฅ/๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„
  • ๋…ธ๋“œ ์—ฐ๊ฒฐ: ๋ถ€๋ถ„/์™„์ „ ๊ทธ๋ž˜ํ”„
  • ํŠน์ •๋…ธ๋“œ ์—ฐ๊ฒฐ: ์—ฐ๊ฒฐ/๋น„์—ฐ๊ฒฐ ๊ทธ๋ž˜ํ”„
  • ์ˆœํ™˜์„ฑ: ์ˆœํ™˜/๋น„์ˆœํ™˜ ๊ทธ๋ž˜ํ”„
  • ๊ฐ€์ค‘์น˜: ๊ฐ€์ค‘์น˜/๋น„๊ฐ€์ค‘์น˜ ๊ทธ๋ž˜ํ”„

์ฃผ์š” ์šฉ์–ด

  • ์ •์ (Vertex)
  • ๊ฐ„์„ (Edge, Branch)
  • ์ธ์ ‘ ์ •์ (Adjacent Vertex)
  • ์‚ฌ์ดํด
  • ๋‹จ์ˆœ ๊ฒฝ๋กœ(Simple Path)

๊ตฌ์กฐ ๋ถ„์„ ๊ฐœ๋…

  • ์ •์ ์˜ ์ฐจ์ˆ˜(Degree)
  • ์ง„์ž… ์ฐจ์ˆ˜(In-Degree)
  • ์ง„์ถœ ์ฐจ์ˆ˜(Out-Degree)
  • ๊ฒฝ๋กœ ๊ธธ์ด(Path Length)

๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

  • ๋ฐฉํ–ฅ์„ฑ ์กด์žฌ
  • <A,B>์™€ <B,A>๋Š” ๋‹ค๋ฅธ ํ‘œํ˜„
  • ์ตœ๋Œ€ ๊ฐ„์„ ์ˆ˜: n(n-1)

alt text

๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„

  • ๋ฐฉํ–ฅ์„ฑ ์—†์Œ
  • (A,B)์™€ (B,A)๋Š” ๋™์ผ ํ‘œํ˜„
  • ์ตœ๋Œ€ ๊ฐ„์„ ์ˆ˜: n(n-1)/2

alt text