์•Œ๊ณ ๋ฆฌ์ฆ˜(Algorithm) ๊ฐœ์š” & ์ž๋ฃŒ๊ตฌ์กฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ํ•„์š”์„ฑ

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์™œ ํ•„์š”ํ•œ๊ฐ€?

์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๋ฌด์—‡์ธ๊ฐ€?

์ž๋ฃŒ๊ตฌ์กฐ(Data Structure)

์•Œ๊ณ ๋ฆฌ์ฆ˜๊ณผ ์ž๋ฃŒ๊ตฌ์กฐ์˜ ์ƒ๊ด€ ๊ด€๊ณ„

  • ์ž๋ฃŒ๊ตฌ์กฐ๋ผ ํ•จ์€ ์ปดํ“จํ„ฐ ๊ธฐ์–ต๊ณต๊ฐ„ ๋‚ด์— ์ž๋ฃŒ๋ฅผ ํ‘œํ˜„ํ•˜๊ณ  ์กฐ์งํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์˜๋ฏธํ•œ๋‹ค. ๋ฌธ์ œ์— ๋งž๋Š” ์ ์ ˆํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•ด์•ผ๋งŒ ๋ณด๋‹ค ํšจ์œจ์ ์œผ๋กœ ์ž๋ฃŒ๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒฐ๊ตญ, ์ข‹์€ ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“ค๋ ค๋ฉด ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ ์ ˆํžˆ ์กฐํ™”๋ฅผ ์ด๋ฃจ์–ด์•ผ ํ•œ๋‹ค.

์„ ํ˜•๊ตฌ์กฐ(Linear)์™€ ๋น„์„ ํ˜• ๊ตฌ์กฐ(Non-Linear)

์„ ํ˜•๊ตฌ์กฐ์™€ ๋น„์„ ํ˜• ๊ตฌ์กฐ์˜ ์ข…๋ฅ˜

  • ์„ ํ˜•๊ตฌ์กฐ๋ž€ ์ž๋ฃŒ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ๋‚˜์—ด์‹œํ‚จ ํ˜•ํƒœ
  • ํ•˜๋‚˜์˜ ์ž๋ฃŒ ๋’ค์— ํ•˜๋‚˜์˜ ์ž๋ฃŒ๊ฐ€ ์กด์žฌ
  • ์ž๋ฃŒ ๊ฐ„์˜ ์•ž๋’ค ๊ด€๊ณ„๊ฐ€ 1:1

์„ ํ˜• ๊ตฌ์กฐ

  • ๋น„์„ ํ˜• ๊ตฌ์กฐ๋ž€ ํ•˜๋‚˜์˜ ์ž๋ฃŒ ๋’ค์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ž๋ฃŒ๊ฐ€ ์กด์žฌ
  • ์ž๋ฃŒ๋“ค ๊ฐ„์˜ ์•ž๋’ค ๊ด€๊ณ„๊ฐ€ 1:n ๋˜๋Š” n:n์˜ ๊ด€๊ณ„

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

์„ ํ˜•/๋น„์„ ํ˜• ์‚ฌ์ง„ ์ถœ์ฒ˜: https://allg.tistory.com/29

 

[์ž๋ฃŒ๊ตฌ์กฐ] ์ž๋ฃŒ๊ตฌ์กฐ๋ž€?(์„ ํ˜•๊ตฌ์กฐ, ๋น„์„ ํ˜•๊ตฌ์กฐ)

[์ž๋ฃŒ๊ตฌ์กฐ] ์ž๋ฃŒ๊ตฌ์กฐ๋ž€? 1.์ž๋ฃŒ๊ตฌ์กฐ๋ž€? ์ž๋ฃŒ๊ตฌ์กฐ(่ณ‡ๆ–™ๆง‹้€ , ์˜์–ด: data structure)๋Š” ์ „์‚ฐํ•™์—์„œ ์ž๋ฃŒ๋ฅผ ํšจ์œจ์ ์œผ๋กœ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ์ปดํ“จํ„ฐ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‹ค. ์‹ ์ค‘ํžˆ ์„ ํƒํ•œ ์ž๋ฃŒ๊ตฌ์กฐ๋Š” ๋ณด๋‹ค

allg.tistory.com

๋ฐฐ์—ด(Array)๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ(Linked List)

๋ฐฐ์—ด(Array)

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

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

  • ๋ฐฐ์—ด์˜ ๋ฌธ์ œ์ ์„ ๋ณด์™„ํ•œ ํ˜•ํƒœ์˜ ์ž๋ฃŒ๊ตฌ์กฐ
  • ๋ฌผ๋ฆฌ์ ์œผ๋กœ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ต์žฅ์น˜์˜ ์–ด๋А ๊ณณ์— ์ €์žฅํ•ด๋„ ๋˜์ง€๋งŒ, ๊ธฐ์–ต ์žฅ์น˜์˜ ์ž„์˜ ์œ„์น˜์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ ๊ฐ„์˜ ๋…ผ๋ฆฌ์ ์ธ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์ด ํ•„์š”ํ•˜๋‹ค.
  • ํ•˜๋‚˜์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ๋•Œ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋‹ค์Œ ๋ฐ์ดํ„ฐ๊ฐ€ ์–ด๋””์— ์ €์žฅ๋˜์–ด ์žˆ๋Š”์ง€๋ฅผ ํ•จ๊ป˜ ๋‚˜ํƒ€๋‚ด์•ผ ํ•œ๋‹ค. ์ด๋ฅผ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ํ•„๋“œ์™€ ๋งํฌ ํ•„๋“œ๋กœ ์ด๋ฃจ์–ด์ง„ ๋…ธ๋“œ๋ผ๋Š” ์ €์žฅ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•œ๋‹ค.
  • ๋…ธ๋“œ๋Š” ์ฐธ์กฐ ์‹œ์Šคํ…œ์œผ๋กœ ์ž‘๋™๋œ๋‹ค. ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ ๋…ธ๋“œ์— ์ €์žฅํ•  ๋•Œ ๋‹ค์Œ ์ˆ˜์„ ์˜ ์ž๋ฃŒ๊ฐ€ ์žˆ๋Š” ์œ„์น˜๋ฅผ ๋ฐ์ดํ„ฐ์— ํฌํ•จ์‹œํ‚จ๋‹ค. ์ด๋ ‡๊ฒŒ ๊ฐ ๋…ธ๋“œ๋“ค์€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
  • ์žฅ์ 
    • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋“ค์˜ ์‚ฝ์ž…/์‚ญ์ œ๊ฐ€ ์šฉ์ดํ•˜๊ณ  ํšจ์œจ์ ์ด๋‹ค.
    • ๋…ผ๋ฆฌ์  ์ˆœ์„œ์™€ ๋ฌผ๋ฆฌ์  ์ˆœ์„œ๋ฅผ ๋ฐ˜๋“œ์‹œ ์ผ์น˜์‹œํ‚ฌ ํ•„์š” ์—†๋‹ค.
    • ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ ์‚ฝ์ž…/์‚ญ์ œ ์‹œ ๋ฐฐ์—ด์ฒ˜๋Ÿผ ๊ตฌ์กฐ์˜ ์žฌ๊ตฌ์„ฑ์ด ํ•„์š” ์—†๋‹ค.
    • ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ๊ฐ€ ๋™์ ์ด๋‹ค.
    • ๋Œ€์šฉ๋Ÿ‰ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ์— ์ ํ•ฉํ•˜๋‹ค.
  • ๋‹จ์ 
    • ๋ฐฐ์—ด๋ณด๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋Ÿ‰์ด ๋งŽ๋‹ค.
    • ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๋Š”๋ฐ ๋น„ํšจ์œจ์ ์ด๋‹ค.(ํŠน์ • ๋ฐ์ดํ„ฐ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค ๊ฐ’๋งŒ์œผ๋กœ ๋ฐ”๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋Š” ์ฒซ ๋ฒˆ์งธ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง„ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด ์›ํ•˜๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ ์žˆ๋Š” ๋…ธ๋“œ๊นŒ์ง€ ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.)

๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์ข…๋ฅ˜

๋ฐฐ์—ด๊ณผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ์˜ ์ข…๋ฅ˜

  • ๋ฐฐ์—ด์€ ์ธ๋ฑ์Šค ๊ฐœ์ˆ˜์— ๋”ฐ๋ผ 1์ฐจ์› ๋ฐฐ์—ด๊ณผ ๋‹ค์ฐจ์› ๋ฐฐ์—ด(2์ฐจ์›, 3์ฐจ์› ๋ฐฐ์—ด)๋กœ ๋‚˜๋‰œ๋‹ค.
  • ๋‹จ์ผ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
    • ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ธ๋‹ค.
    • ํ•˜๋‚˜์˜ ๋งํฌ ํ•„๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.
  • ๋‹จ์ผ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
    • ๋‹จ๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ธ๋‹ค.
    • ํ•˜๋‚˜์˜ ๋งํฌ ํ•„๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค.
    • ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์™€ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์–ด ์ˆœํšŒํ•œ๋‹ค.
  • ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
    • ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ธ๋‹ค.
    • ๋‘ ๊ฐœ์˜ ๋งํฌ ํ•„๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ์—, ์„ ํ–‰ ๋…ธ๋“œ์™€ ํ›„ํ–‰ ๋…ธ๋“œ ์ „๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์„ ํ–‰ ๋…ธ๋“œ์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ด์ค‘ ์›ํ˜• ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ
    • ์–‘๋ฐฉํ–ฅ์œผ๋กœ ์›€์ง์ธ๋‹ค.
    • ๋‘ ๊ฐœ์˜ ๋งํฌ ํ•„๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ๊ธฐ์—, ์„ ํ–‰ ๋…ธ๋“œ์™€ ํ›„ํ–‰ ๋…ธ๋“œ ์ „๋ถ€ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ์„ ํ–‰ ๋…ธ๋“œ์— ์ง์ ‘์ ์œผ๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
    • ๋งˆ์ง€๋ง‰ ๋…ธ๋“œ์™€ ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๊ฐ€ ์„œ๋กœ ์—ฐ๊ฒฐ๋˜์–ด์žˆ์–ด ์ˆœํšŒํ•œ๋‹ค.

์Šคํƒ(Stack)๊ณผ ํ(Queue)

์Šคํƒ(Stack)

  • ์Šคํƒ์€ ์„ ํ˜• ๋ฆฌ์ŠคํŠธ์˜ ํ•œ์ชฝ์—์„œ๋งŒ ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
  • ์Šคํƒ์€ ๊ฐ€์žฅ ๋‚˜์ค‘์— ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๊ฐ€์žฅ ๋จผ์ € ์‚ญ์ œ๋˜๊ธฐ ๋•Œ๋ฌธ์— ํ›„์ž…์„ ์ถœ(LIFO, Last In First Out) ๋ฆฌ์ŠคํŠธ๋ผ๊ณ ๋„ ์ผ์ปซ๋Š”๋‹ค.
  • ์‚ฝ์ž… ์—ฐ์‚ฐ์€ push, ์‚ญ์ œ ์—ฐ์‚ฐ์€ pop์„ ์‚ฌ์šฉํ•œ๋‹ค.

ํ(Queue)

  • ํ๋Š” ์„ ํ˜• ๋ฆฌ์ŠคํŠธ์˜ ํ•œ์ชฝ ๋์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์‚ฝ์ž…๋งŒ ์ˆ˜ํ–‰๋˜๊ณ  ๋‹ค๋ฅธ ํ•œ์ชฝ ๋์—์„œ๋Š” ๋ฐ์ดํ„ฐ์˜ ์‚ญ์ œ๋งŒ ์ˆ˜ํ–‰๋˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ
  • ํ๋Š” ๊ฐ€์žฅ ๋จผ์ € ์‚ฝ์ž…๋œ ๋ฐ์ดํ„ฐ๊ฐ€ ๋จผ์ € ์‚ญ์ œ๋˜๋ฏ€๋กœ ์„ ์ž…์„ ์ถœ(FIFO, First In First Out) ๋ฆฌ์ŠคํŠธ๋ผ๊ณ ๋„ ์ผ์ปซ๋Š”๋‹ค.

ํŠธ๋ฆฌ(Tree)

  • ํŠธ๋ฆฌ๋Š” ๋…ธ๋“œ(node)๊ฐ€ ๊ฐ„์„ (edge)์œผ๋กœ ์—ฐ๊ฒฐ๋˜์–ด ๊ณ„์ธต์  ๊ตฌ์กฐ๋ฅผ ์ด๋ฃจ๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ

ํŠธ๋ฆฌ
ํŠธ๋ฆฌ ์ฃผ์š” ์šฉ์–ด

  • A, B, C, D ๋“ฑ ํŠธ๋ฆฌ์˜ ๊ตฌ์„ฑ์š”์†Œ๊ฐ€ ๋…ธ๋“œ(node)
  • ํŠธ๋ฆฌ ๊ตฌ์กฐ ์ตœ์ƒ์œ„์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๋Š” ๋ฃจํŠธ(root) ๋…ธ๋“œ
  • ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ, ๋‹ค๋ฅธ ๋…ธ๋“œ๋กœ ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด ๊นŠ์ด(depth)
  • ๊ฐ™์€ ๋ถ€๋ชจ๋ฅผ ๊ฐ€์ง€๋ฉด์„œ ๊ฐ™์€ depth์— ์กด์žฌํ•˜๋Š” ๋…ธ๋“œ๋“ค์€ ํ˜•์ œ(sibling) ๋…ธ๋“œ๋กœ ์ผ์ปซ๋Š”๋‹ค.
  • ๋ฃจํŠธ๋…ธ๋“œ A์™€ B, C, D๋Š” ๋ถ€๋ชจ(parent) ์ž์‹(child) ๊ด€๊ณ„์ด๋‹ค.
  • ๋…ธ๋“œ์™€ ๋…ธ๋“œ๋ฅผ ์ž‡๋Š” ์„ ์ด ๊ฐ„์„ (edge)
  • ๋…ธ๋“œ์˜ ์„œ๋ธŒ ํŠธ๋ฆฌ ๊ฐœ์ˆ˜๋ฅผ ์ฐจ์ˆ˜(degree). A์˜ ๋…ธ๋“œ ์ฐจ์ˆ˜๋Š” 3, C์˜ ๋…ธ๋“œ ์ฐจ์ˆ˜๋Š” 0์ด๋‹ค. ํŠธ๋ฆฌ ์ฐจ์ˆ˜๋Š” ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜ ์ค‘ ๊ฐ€์žฅ ํฐ ๊ฐ’์„ ์ผ์ปซ๋Š”๋‹ค. ํŠธ๋ฆฌ์˜ ์ฐจ์ˆ˜๋Š” 3์ด๋‹ค.
  • ์ฐจ์ˆ˜๊ฐ€ 0์ธ ๋…ธ๋“œ๋ฅผ ๋ฆฌํ”„(leaf) ๋…ธ๋“œ ํ˜น์€ ๋‹จ๋ง ๋…ธ๋“œ(terminal node)์ด๋‹ค.
  • ์ˆฒ(forest) ์ด๋ž€ ์„œ๋ธŒ ํŠธ๋ฆฌ์˜ ์ง‘ํ•ฉ์œผ๋กœ ํŠธ๋ฆฌ์—์„œ ๋ฃจํŠธ ๋…ธ๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๋ฉด ์ˆฒ์ด ๋œ๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ(Binary Tree)

  • ์ด์ง„ ํŠธ๋ฆฌ๋ž€ ๊ฐ๊ฐ์˜ ๋…ธ๋“œ๊ฐ€ ์ตœ๋Œ€ ๋‘ ๊ฐœ์˜ ์ž์‹ ๋…ธ๋“œ๋ฅผ ๊ฐ€์ง€๋Š” ์ฆ‰, ๊ฐ ๋…ธ๋“œ์˜ ์ฐจ์ˆ˜๊ฐ€ 2 ์ดํ•˜์ธ ์ˆœ์„œ ํŠธ๋ฆฌ

์ด์ง„ ํŠธ๋ฆฌ

  • ๊ณต๋ฐฑ๋„ ์ด์ง„ ํŠธ๋ฆฌ๋กœ ํฌํ•จํ•œ๋‹ค.
  • ์ด์ง„ ํŠธ๋ฆฌ๋Š” ์ˆœ์„œ์— ๋”ฐ๋ผ ๋‹ฌ๋ผ์ง€๊ธฐ์— 5๋ฒˆ์งธ, 6๋ฒˆ์งธ ํŠธ๋ฆฌ๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ํŠธ๋ฆฌ์ด๋‹ค.

์ด์ง„ ํŠธ๋ฆฌ ํŠน์„ฑ
์ด์ง„ ํŠธ๋ฆฌ ์ข…๋ฅ˜
์ด์ง„ ํŠธ๋ฆฌ ๊ตฌํ˜„

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

  • ๊ทธ๋ž˜ํ”„๋Š” G=(V, E)๋Š” ๋„ํ˜•์œผ๋กœ ํ‘œํ˜„๋˜๋Š” ๋น„์„ ํ˜• ์ž๋ฃŒ๊ตฌ์กฐ
  • G=๊ทธ๋ž˜ํ”„(Graph), V=์ •์ , ๋…ธ๋“œ(Vertex, Node), E=๊ฐ„์„ (Edge)
  • ์—ฐ๊ฒฐํ•  ๊ฐ์ฒด๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ •์ ์˜ ์ง‘ํ•ฉ V์™€ ์ •์ ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ„์„ ์˜ ์ง‘ํ•ฉ E๋กœ ๊ตฌ์„ฑ๋œ๋‹ค.
  • ๊ทธ๋ž˜ํ”„๋Š” ๊ฐ„์„ ์˜ ๋ฐฉํ–ฅ์„ฑ ์—ฌ๋ถ€์— ๋”ฐ๋ผ ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Undirected Graph)์™€ ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„(Directed Graph)๋กœ ๊ตฌ๋ถ„๋œ๋‹ค.
  • ๋ฌด๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋Š” ๊ฐ„์„ ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋‘ ์ •์ ์˜ ์Œ์— ์ˆœ์„œ๊ฐ€ ์—†์œผ๋ฉฐ, ์ ์  u์—์„œ ์ •์  v์‚ฌ์ด์˜ ๊ฐ„์„ ์„ (u, v) ๋˜๋Š” (v, u)๋กœ ํ‘œ์‹œํ•œ๋‹ค.
  • ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„๋Š” ์ •์  u์—์„œ ์ •์  v๋กœ์˜ ๊ฐ„์„ ์„ <u, v>๋กœ ํ‘œ์‹œํ•˜๋ฉฐ, ์ด๋•Œ u๋Š” ๊ผฌ๋ฆฌ์ด๊ณ  v๋Š” ๋จธ๋ฆฌ๋ผ๊ณ  ํ•œ๋‹ค.
  • ๊ฐ„์„ ์— ๋น„์šฉ์ด๋‚˜ ์‹œ๊ฐ„๊ณผ ๊ฐ™์€ ์˜๋ฏธ๋ฅผ ๊ฐ–๋Š” ๊ฐ€์ค‘์น˜๋ฅผ ๋ถ€์—ฌํ•œ ๊ทธ๋ž˜ํ”„๋ฅผ ๊ฐ€์ค‘ ๊ทธ๋ž˜ํ”„(Weighted Graph)๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜ํ”„
๊ทธ๋ž˜ํ”„ ์ฃผ์š” ์šฉ์–ด

  • ์ธ์ ‘(adjacent), ๋ถ€์ˆ˜(incident): ๋‘ ์ •์  u, v ์‚ฌ์ด์— ๊ฐ„์„ ์ด ์žˆ์œผ๋ฉด u์™€ v๋Š” ์ธ์ ‘ํ•œ๋‹ค๊ณ  ํ•˜๋ฉฐ, ํ•ด๋‹น ๊ฐ„์„ ์€ ์ •์  u, v์— ๋ถ€์ˆ˜๋˜์—ˆ๋‹ค๊ณ  ํ•œ๋‹ค.
  • ๊ฒฝ๋กœ(path): ๊ทธ๋ž˜ํ”„ G์—์„œ ์ •์  v1๋กœ๋ถ€ํ„ฐ ์ •์  vn๊นŒ์ง€์˜ ๊ฒฝ๋กœ๋ž€ ๊ฐ„์„ ์œผ๋กœ ์—ฐ๊ฒฐ๋œ ์ •์ ์˜ ์ˆœ์„œ ๋ฆฌ์ŠคํŠธ๋ฅผ ๋งํ•˜๋ฉฐ, ๊ฒฝ๋กœ์— ์กด์žฌํ•˜๋Š” ๊ฐ„์„ ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ธธ์ด(length)๋ผ๊ณ  ํ•œ๋‹ค.
  • ์ฐจ์ˆ˜(degree): ํ•ด๋‹น ์ •์ ์— ๋ถ€์ˆ˜๋œ ๊ฐ„์„ ์˜ ์ˆ˜๋ฅผ ์˜๋ฏธ. ๋ฐฉํ–ฅ ๊ทธ๋ž˜ํ”„์—์„œ๋Š” ์ฐจ์ˆ˜๋ฅผ ์„ธ๋ถ„ํ™”ํ•˜์—ฌ ์ •์ ์œผ๋กœ ๋“ค์–ด์˜ค๋Š” ๊ฐ„์„ ์˜ ์ˆ˜๋ฅผ ์ง„์ž… ์ฐจ์ˆ˜(in-degree)๋ผ๊ณ  ํ•˜๊ณ , ๊ทธ ์ •์ ์—์„œ ๋‚˜๊ฐ€๋Š” ๊ฐ„์„ ์˜ ์ˆ˜๋ฅผ ์ง„์ถœ ์ฐจ์ˆ˜(out-degree)๋ผ๊ณ  ํ•œ๋‹ค.
  • ๋‹จ์ˆœ ๊ฒฝ๋กœ(simple path): ํ•œ ๊ฒฝ๋กœ์ƒ์—์„œ ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ์ •์ ์„ ์ œ์™ธํ•œ ๋ชจ๋“  ์ •์ ์ด ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ฅผ ๋งํ•œ๋‹ค.
  • ์‚ฌ์ดํด(cycle): ์ฒ˜์Œ๊ณผ ๋งˆ์ง€๋ง‰ ์ •์ ์ด ๊ฐ™์€ ๋‹จ์ˆœ ๊ฒฝ๋กœ๋ฅผ ๋งํ•˜๋ฉฐ, ํŠนํžˆ ์‚ฌ์ดํด์ด๋ฉด์„œ ๊ฒฝ๋กœ์˜ ๊ธธ์ด๊ฐ€ 1์ธ ๊ฒฝ๋กœ๋ฅผ ๋ฃจํ”„(loop)๋ผ๊ณ  ํ•œ๋‹ค.

๊ทธ๋ž˜ํ”„ ๊ตฌํ˜„

๋ณธ ๊ธ€์€ ํ•œ๊ตญ๋ฐฉ์†กํ†ต์‹ ๋Œ€ํ•™๊ต ์ž๋ฃŒ์™€ ๊ฐœ์ธ ๊ณต๋ถ€๋กœ ๋งŒ๋“ค์–ด์กŒ์Šต๋‹ˆ๋‹ค.

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!