deo2kim
๋งž์™œํ‹€
deo2kim
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ N
    • CS
      • Algorithm
      • Data Structure
      • Network
      • DB
      • OS
    • Algorithm Problem
      • Python
      • JavaScript
    • Programming language
      • Python
      • JavaScript
    • Tool
      • Jquery
      • React
    • ๊ฐœ๋ฐœ
    • Infra N

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

๊ณต์ง€์‚ฌํ•ญ

์ธ๊ธฐ ๊ธ€

์ตœ๊ทผ ๋Œ“๊ธ€

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

๋ฐ˜์‘ํ˜•
hELLO ยท Designed By ์ •์ƒ์šฐ.
deo2kim

๋งž์™œํ‹€

๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming)
CS/Algorithm

๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming)

2020. 10. 1. 20:28
๋ฐ˜์‘ํ˜•

๋ถ„ํ•  ์ •๋ณต
๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ

๐Ÿ“” ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming)์ด๋ž€

  • ํ•˜๋‚˜์˜ ๋ฌธ์ œ๋Š” ๋‹จ ํ•œ ๋ฒˆ๋งŒ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•! ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ (์ดํ•˜ DP)
  • ์ž‘์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ํฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋Š” ๋ถ„ํ• ์ •๋ณต๊ณผ ์œ ์‚ฌํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ๋ถ„ํ• ์ •๋ณต์˜ ๊ฒฝ์šฐ ํ•œ๋ฒˆ ํ’€์—ˆ๋˜ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ ํ‘ธ๋Š” ๋น„ํšจ์œจ์ ์ธ ๋‹จ์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค. (์ผ๋ถ€ ๊ฒฝ์šฐ ์ œ์™ธ (๋ณ‘ํ•ฉ์ •๋ ฌ))
  • ๋ถ„ํ• ์ •๋ณต๊ณผ DP์˜ ์ฐจ์ด๋ฅผ ๋ณด์—ฌ์ฃผ๋Š” ๋Œ€ํ‘œ์ ์ธ ์˜ˆ์‹œ๋กœ๋Š” ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ด ์žˆ๋‹ค.
    • ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด: ๋ฐ”๋กœ ์•ž๊ณผ ์•ž์•ž ๋‘ ์นธ์˜ ์ˆซ์ž์˜ ํ•ฉ์„ ๊ตฌํ•ด์„œ ๋‚˜ํƒ€๋‚ด๋Š” ์ˆ˜์—ด
    • 1, 1, 2, 3, 5, 8, 13, 21, 34, 55
    • ๋ถ„ํ• ์ •๋ณต์„ ์ด์šฉํ•œ๋‹ค๋ฉด ์ด๋ฏธ ๊ตฌํ•œ ์ˆซ์ž๋“ค์„ ๋‹ค์‹œ ๊ณ„์‚ฐํ•˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

์ถœ์ฒ˜: https://blog.naver.com/ndb796/221233570962

  • ์œ„์˜ ์‚ฌ์ง„์„ ๋ณด๋ฉด 13์„ ๊ตฌํ•˜๋Š”๊ฒŒ 2๋ฒˆ, 12 3๋ฒˆ, 11 3๋ฒˆ ๊ณ„์‚ฐํ•˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด๋Ÿฐ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ๋ฉ”๋ชจ์ด์ œ์ด์…˜์„ ์‚ฌ์šฉํ•œ๋‹ค๋Š” ์ !
  • ์ด๋ฏธ ๊ณ„์‚ฐ๋œ ๊ฒฐ๊ณผ๋Š” ๋ฆฌ์ŠคํŠธ์— ์ €์žฅ์„ ํ•ด๋‘๊ณ  ํ•„์š”ํ•  ๋•Œ ๊บผ๋‚ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

๐Ÿ“” ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming) ๊ตฌํ˜„

# ํ”ผ๋ณด: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ...
# ํ”ผ๋ณด๋ฅผ ๋ถ„ํ• ์ •๋ณต์œผ๋กœ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
import time


def fibo1(x):
    if x == 1:
        return 1
    if x == 2:
        return 1

    return fibo1(x - 2) + fibo1(x - 1)


start = time.time()
print(fibo1(37))
end = time.time()
print(f'๋ถ„ํ• ์ •๋ณต: {end - start}')

# ํ”ผ๋ณด๋ฅผ DP๋กœ ๊ตฌํ•˜๋Š” ๋ฐฉ๋ฒ•
dp = [0] * 100


def fibo2(x):
    if x == 1:
        return 1
    if x == 2:
        return 1
    if dp[x] != 0:
        return dp[x]
    dp[x] = fibo2(x - 2) + fibo2(x - 1)
    return dp[x]


start = time.time()
print(fibo2(37))
end = time.time()
print(f'๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ: {end - start}')

'''
24157817
๋ถ„ํ• ์ •๋ณต: 6.408001184463501
24157817
๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ: 0.0
'''

 

๐Ÿ“” ๋‹ค์ด๋‚˜๋ฏนํ”„๋กœ๊ทธ๋ž˜๋ฐ(Dynamic Programming) ํŠน์ง•

  • ๋ณดํ†ต ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ํ’€ ๋•Œ ํ’€์ด๊ฐ€ ๋„ˆ๋ฌด ๊ฐ„๋‹จํ•˜์ง€๋งŒ ์‹œ๊ฐ„ ์ดˆ๊ณผ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด ์ด ์นœ๊ตฌ๋ฅผ ๋– ์˜ฌ๋ฆฌ์ž.
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'CS > Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด(Sieve Of Eratosthenes)  (0) 2020.10.03
๋‹ค์ต์ŠคํŠธ๋ผ(dijkstra)  (0) 2020.10.02
ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(kruskal)  (0) 2020.09.30
์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint-set)  (0) 2020.09.29
๊นŠ์ด ์šฐ์„  ํƒ์ƒ‰(Depth First Search, DFS)  (0) 2020.09.28
    'CS/Algorithm' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • ์—๋ผํ† ์Šคํ…Œ๋„ค์Šค์˜ ์ฒด(Sieve Of Eratosthenes)
    • ๋‹ค์ต์ŠคํŠธ๋ผ(dijkstra)
    • ํฌ๋ฃจ์Šค์นผ ์•Œ๊ณ ๋ฆฌ์ฆ˜(kruskal)
    • ์„œ๋กœ์†Œ ์ง‘ํ•ฉ(Disjoint-set)
    deo2kim
    deo2kim
    ์ฝ”๋”ฉ ๊ธฐ๋กํ•˜๊ธฐ

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”