YS's develop story

๋™์  ๊ณ„ํš๋ฒ•๊ณผ ๋ถ„ํ•  ์ •๋ณต ์ •๋ฆฌ ๋ณธ๋ฌธ

Algorithm

๋™์  ๊ณ„ํš๋ฒ•๊ณผ ๋ถ„ํ•  ์ •๋ณต ์ •๋ฆฌ

Yusang 2021. 7. 30. 09:48

๐Ÿ‘ฉ‍๐Ÿ’ป ๋™์  ๊ณ„ํš๋ฒ•๊ณผ ๋ถ„ํ•  ์ •๋ณต ์ •๋ฆฌ with Python

๐Ÿฅ˜ ๋™์  ๊ณ„ํš๋ฒ• (Dynamic Programming)

๋™์  ๊ณ„ํš๋ฒ•, Dynamic Programming์ด๋ž€?

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

 

๐Ÿ€ Memoization ํ™œ์šฉ ์˜ˆ์‹œ

ํ”ผ๋ณด๋‚˜์น˜์ˆ˜์—ด์„ ๊ณ„์‚ฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜

 

 

๐Ÿ€ Memoization์„ ํ™œ์šฉํ•˜์ง€ ์•Š์€ ์ฝ”๋“œ

def fibo(value):
    if value <= 1:
        return value

    else:
        return fibo(value - 1) + fibo(value - 2)

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n^2)

 

 

๐Ÿ€ Memoization์„ ํ™œ์šฉํ•œ ์ฝ”๋“œ

# Memoization
def fibo(value):
    list = [0 for i in range(value + 1)]
    list[0] = 0
    list[1] = 1

    for i in range(2, value + 1):
        list[i] = list[i - 1] + list[i - 2]
    return list[value]

์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)

 

Memoization์€ ์ค‘๋ณต๋˜๋Š” ๊ณ„์‚ฐ์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—

๊ธฐ์กด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜๋ณด๋‹ค ์†๋„๊ฐ€ ๋งค์šฐ ๋น ๋ฅผ ์ˆ˜๋ฐ–์— ์—†์Šต๋‹ˆ๋‹ค.

 

๐Ÿณ ๋ถ„ํ•  ์ •๋ณต (Divide And Conquer)

๋ถ„ํ•  ์ •๋ณต, Divide And Conquer ์ด๋ž€?

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

๋ถ„ํ•  ์ •๋ณต์˜ ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ : Quick Sort, Merge Sort

 

๐Ÿช ๋™์  ๊ณ„ํš๋ฒ• VS ๋ถ„ํ•  ์ •๋ณต๋ฒ•

๊ณตํ†ต์ 

  • ๋ฌธ์ œ๋ฅผ ์ž˜๊ฒŒ ์ชผ๊ฐœ์„œ, ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• ํ•ฉ๋‹ˆ๋‹ค.

 

์ฐจ์ด์ 

 ๋™์  ๊ณ„ํš๋ฒ•

  • ๋ถ€๋ถ„ ๋ฌธ์ œ๋Š” ์ค‘๋ณต๋˜์–ด์„œ, ์ƒ์œ„ ๋ฌธ์ œ ํ•ด๊ฒฐ ์‹œ์— ์žฌํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.
  • ๋ฌธ์ œ๊ฐ€ ์žฌํ™œ์šฉ๋˜๊ธฐ์— ์žฌํ™œ์šฉ๋˜๋Š” ๋ฌธ์ œ๋ฅผ ๊ณ„์‚ฐํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด Memoization ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•ฉ๋‹ˆ๋‹ค.

 ๋ถ„ํ•  ์ •๋ณต

  • ๋ถ€๋ถ„ ๋ฌธ์ œ๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
  • Memoization ๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

๋™์  ๊ณ„ํš๋ฒ•, ๋ถ„ํ•  ์ •๋ณต๋ฒ•์˜

๊ฐ€์žฅ ํฐ ์ฐจ์ด์ ์€ Memoization๊ธฐ๋ฒ•์„ ํ™œ์šฉํ•˜๋ƒ ํ™œ์šฉํ•˜์ง€ ์•Š๋Š๋ƒ์ž…๋‹ˆ๋‹ค.

Comments