Home > Data Structure > ๐Ÿงฉ [Data Structure] ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์žฌ๊ท€

๐Ÿงฉ [Data Structure] ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์žฌ๊ท€
Data Structure

๐Ÿงฉ [Data Structure] ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์žฌ๊ท€.

๐Ÿ“Œ Intro.

  • โ†˜๏ธŽ ์žฌ๊ท€๋Š” โ€˜๋‚ด ์•ˆ์˜ ๋‚˜๋ฅผ ์ฐพ๋Š” ๊ฒƒโ€™์ด๋‹ค.
    • โ†˜๏ธŽ ์ฆ‰, ์„ฑ๊ฒฉ์€ ๊ฐ™๊ณ  ํฌ๊ธฐ๋งŒ ์ž‘์€ ๋‚˜๋ฅผ ์ฐพ์•„ ํฐ ๋‚˜์™€ ์ž‘์€ ๋‚˜๊ฐ€ ์—ฐ๊ฒฐ๋œ ๊ด€๊ณ„๋ฅผ ๋“œ๋Ÿฌ๋‚ด๋Š” ๊ฒƒ์ด๋‹ค.

โœ…1๏ธโƒฃ ์žฌ๊ท€์˜ ์˜ˆ์‹œ.

  • 1. ํŒฉํ† ๋ฆฌ์–ผ(Factorial)
    • โ†˜๏ธŽ n! = n x (n-1)!์ด๋‹ค.
    • โ†˜๏ธŽ ํฌ๊ธฐ๊ฐ€ n์ธ ํŒฉํ† ๋ฆฌ์–ผ์€ ํฌ๊ธฐ๊ฐ€ n-1์ธ ํŒฉํ† ๋ฆฌ์–ผ์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค.
    • โ†˜๏ธŽ 1๋ถ€ํ„ฐ n๊นŒ์ง€ ๊ณฑํ•˜๋Š” n!(n ํŒฉํ† ๋ฆฌ์–ผ)์€ n! = 1 x 2 x 3 x ... x (n-1) x n์ด๋‹ค.
      • โ†˜๏ธŽ ์—ฌ๊ธฐ์„œ ๋งจ ๋์— ์žˆ๋Š” n๋งŒ ์ œ์™ธํ•˜๋ฉด 1 x 2 x 3 x ... x (n-1)์ธ๋ฐ ์ด๊ฒƒ์€ (n-1)!์ด๋‹ค.
      • โ†˜๏ธŽ n!์€ ์—ฌ๊ธฐ์— n๋งŒ ๋” ๊ณฑํ•˜๋ฉด ๋œ๋‹ค.
        • ์ฆ‰, n! = n x (n-1)!์ด๋‹ค.

โœ…2๏ธโƒฃ ์žฌ๊ท€์  ๊ตฌ์กฐ.

  • โ†˜๏ธŽ ์–ด๋–ค ๋ฌธ์ œ๋‚˜ ํ•จ์ˆ˜ ๋“ฑ์ด ์ž์‹ ๊ณผ ์„ฑ๊ฒฉ์ด ๋˜‘๊ฐ™์ง€๋งŒ ํฌ๊ธฐ๊ฐ€ ๋” ์ž‘์€ ๋ฌธ์ œ๋ฅผ ํ•˜๋‚˜ ์ด์ƒ ํฌํ•จํ•˜๊ณ  ์žˆ์„ ๋•Œ ์žฌ๊ท€์  ๊ตฌ์กฐ๋ฅผ ๊ฐ–๊ณ  ์žˆ๋‹ค๊ณ  ๋งํ•œ๋‹ค.
  • โ†˜๏ธŽ ์ž๊ธฐ ์ž์‹ ์„ ์ •์˜ํ•˜๊ฑฐ๋‚˜ ์ฐธ์กฐํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.
    • โ†˜๏ธŽ ์ฆ‰, ์–ด๋–ค ๊ฐœ๋…, ํ•จ์ˆ˜, ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ, ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋“ฑ์ด ์ž์‹ ์„ ๋ฐ˜๋ณต์ ์œผ๋กœ ํ˜ธ์ถœํ•˜๊ฑฐ๋‚˜ ํฌํ•จํ•˜๋Š” ๋ฐฉ์‹์„ ๋งํ•œ๋‹ค.

โœ…3๏ธโƒฃ ์žฌ๊ท€์  ๊ตฌ์กฐ์˜ ๊ฐœ๋….

  • โ†˜๏ธŽ ์ •์˜ : ์ž๊ธฐ ์ž์‹ ์„ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜ ํฌํ•จํ•˜๋Š” ๊ตฌ์กฐ.
  • โ†˜๏ธŽ ์ฃผ์š” ํŠน์ง• : ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„๊ณ , ์ด ๋ถ€๋ถ„ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•œ ๋’ค ๊ฒฐ๊ณผ๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ „์ฒด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•จ.
  • โ†˜๏ธŽ ์ข…๋ฃŒ ์กฐ๊ฑด(Base Case) : ๋ฌดํ•œํžˆ ๋ฐ˜๋ณต๋˜์ง€ ์•Š๋„๋ก ๋ฉˆ์ถ”๋Š” ์กฐ๊ฑด์ด ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•จ.

โœ…4๏ธโƒฃ ์žฌ๊ท€์  ๊ตฌ์กฐ์˜ ์žฅ๋‹จ์ .

์žฅ์  ๋‹จ์ 
๋ฌธ์ œ๋ฅผ ๋…ผ๋ฆฌ์ ์œผ๋กœ ํ‘œํ˜„ํ•˜๊ธฐ ์‰ฝ๋‹ค ๋ฐ˜๋ณต ํ˜ธ์ถœ๋กœ ์ธํ•ด ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ์œ„ํ—˜์ด ์žˆ๋‹ค
๋ณต์žกํ•œ ๋ฌธ์ œ๋ฅผ ๊ฐ„๊ฒฐํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค ๋น„ํšจ์œจ์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ๊ฐ€๋Šฅ์„ฑ
์ข…๋ฃŒ ์กฐ๊ฑด(Base Case)๋งŒ ๋ช…ํ™•ํ•˜๋ฉด ๊ตฌํ˜„์ด ์‰ฝ๋‹ค ๋ฐ˜๋ณต๋ฌธ(Iterative)๋ณด๋‹ค ์†๋„๊ฐ€ ๋Š๋ฆด ์ˆ˜ ์žˆ๋‹ค

โœ…5๏ธโƒฃ ์žฌ๊ท€์  ๊ตฌ์กฐ์˜ ํ•ต์‹ฌ ์š”์†Œ.

  • โ†˜๏ธŽ Base Case (์ข…๋ฃŒ ์กฐ๊ฑด) : ๋” ์ด์ƒ ์žฌ๊ท€๊ฐ€ ์ง„ํ–‰๋˜์ง€ ์•Š๋Š” ์กฐ๊ฑด์ž„.
  • โ†˜๏ธŽ Recursive Case(์žฌ๊ท€ ์กฐ๊ฑด) : ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋‚˜๋ˆ„๊ณ  ์ž๊ธฐ ์ž์‹ ์„ ํ˜ธ์ถœํ•จ.
  • โ†˜๏ธŽ Stack ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ : ์žฌ๊ท€ ํ˜ธ์ถœ๋งˆ๋‹ค ์ƒˆ๋กœ์šด ์Šคํƒ ํ”„๋ ˆ์ž„์ด ์ƒ์„ฑ๋จ.

โœ…6๏ธโƒฃ ํ”„๋กœ๊ทธ๋ž˜๋ฐ๊ณผ ์žฌ๊ท€(Recursion)

  • โ†˜๏ธŽ ๋Œ€๋ถ€๋ถ„์˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ํ•จ์ˆ˜ ๋‚ด๋ถ€์—์„œ ์ž์‹ ์„ ํ˜ธ์ถœํ•˜๋Š” ์ž๊ธฐํ˜ธ์ถœ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•œ๋‹ค.
  • โ†˜๏ธŽ ์˜์–ด๋กœ๋Š” recursion์ด๋ผ๊ณ  ํ•˜๊ณ  ์šฐ๋ฆฌ๋ง๋กœ ๋ณดํ†ต ์žฌ๊ท€๋ผ๊ณ  ํ•œ๋‹ค.
    • โ†˜๏ธŽ ์ด๋Ÿฐ ์˜๋ฏธ์—์„œ, ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ๊ด€๊ณ„ ์ค‘์‹ฌ์˜ ์‚ฌ๊ณ ๋ฐฉ์‹์„ ํ›ˆ๋ จํ•˜๋Š” ๋„๊ตฌ์ด๊ธฐ๋„ ํ•˜๋‹ค.

โœ…7๏ธโƒฃ ์žฌ๊ท€์™€ ์ž๋ฃŒ๊ตฌ์กฐ ๊ทธ๋ฆฌ๊ณ  ์•Œ๊ณ ๋ฆฌ์ฆ˜.

  • โ†˜๏ธŽ ์žฌ๊ท€๋ฅผ ๋ชจ๋ฅด๊ณ ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ณต๋ถ€ํ•  ์ˆ˜ ์—†๋‹ค.
  • โ†˜๏ธŽ ์žฌ๊ท€๋Š” ์ปดํ“จํ„ฐ ๊ณผํ•™ ์ด๋ก ์˜ ๊ทผ๊ฐ„์„ ์ด๋ฃจ๋Š” ์ค‘์š” ๊ฐœ๋….
    • โ†˜๏ธŽ ์–ด๋ ต๊ฑฐ๋‚˜ ํŠน๋ณ„ํ•œ ์ฃผ์ œ๊ฐ€ ์•„๋‹˜.
    • โ†˜๏ธŽ ์ปดํ“จํ„ฐ ๊ณผํ•™์„ ๊ณต๋ถ€ํ•˜๋‹ค ๋ณด๋ฉด ์žฌ๊ท€๋Š” ๋Š์ž„์—†์ด ๋‹ค์–‘ํ•œ ์–ผ๊ตด๋กœ ์ถœํ˜„ํ•จ.