less than 1 minute read

πŸ“˜ DP μ•Œκ³ λ¦¬μ¦˜ (Dynamic Algorithm) μ΄λž€

λ‹€μŒμ€ Dynamic Algorithm의 사전적 μ •μ˜μ΄λ‹€.

λ³΅μž‘ν•œ 문제λ₯Ό κ°„λ‹¨ν•œ μ—¬λŸ¬ 개의 문제둜 λ‚˜λˆ„μ–΄ ν‘ΈλŠ” 방법을 λ§ν•œλ‹€. 이것은 λΆ€λΆ„ 문제 반볡과 졜적 λΆ€λΆ„ ꡬ쑰λ₯Ό 가지고 μžˆλŠ” μ•Œκ³ λ¦¬μ¦˜μ„ 일반적인 방법에 λΉ„ν•΄ λ”μš± 적은 μ‹œκ°„ 내에 ν’€ λ•Œ μ‚¬μš©ν•œλ‹€.

일반적으둜 μž¬κ·€λ₯Ό 톡해 ν’€ 수 μžˆλŠ” 문제의 μ‹œκ°„λ³΅μž‘λ„λŠ” O(n^2)이닀.
ν•˜μ§€λ§Œ λ‹€μŒ κ·Έλ¦Όκ³Ό 같이 μž¬κ·€λŠ” μ—¬λŸ¬κ°€μ§€ κ²ΉμΉ˜λŠ” λ™μΌν•œ 연산듀이 λ°œμƒν•œλ‹€.
이λ₯Ό DPμ•Œκ³ λ¦¬μ¦˜μ„ 톡해 κ°œμ„ ν•˜λ©΄ O(f(n))μ •λ„λ‘œ κ°œμ„ μ΄ κ°€λŠ₯ν•˜λ‹€.

image


πŸ“˜ DP μ•Œκ³ λ¦¬μ¦˜μ˜ μ‚¬μš© 쑰건

  • Overlapping Subproblems
  • Optimal Substructure


πŸ“Œ Overlapping Subproblems

λŒμΌν•œ μž‘μ€ λ¬Έμ œλ“€μ΄ λ°˜λ³΅ν•˜μ—¬ λ‚˜νƒ€λ‚˜λŠ” 경우

πŸ“Œ Optimal Substructure

λΆ€λΆ„ 문제의 졜적 결과값을 μ‚¬μš©ν•΄ 전체 문제의 졜적 κ²°κ³Όλ₯Ό λ‚Ό 수 μžˆλŠ” 경우


πŸ“– κ΅¬ν˜„λ°©λ²•

πŸ“Œ Top-Down 방식

μž¬κ·€ν•¨μˆ˜μ™€ λ˜‘κ°™μ€ λ°©μ‹μœΌλ‘œ μž‘λ™ν•˜μ§€λ§Œ, β€œMemoization”을 ν™œμš©ν•˜μ—¬, 이전에 κ³„μ‚°ν•œ 값을 λ‹€μ‹œ λ°˜λ³΅ν•˜λŠ” 것이 μ•„λ‹ˆλΌ λ‹¨μˆœνžˆ κ°€μ Έμ˜€λŠ” λ°©μ‹μœΌλ‘œ μ²˜λ¦¬ν•¨μœΌλ‘œμ¨, μ‹œκ°„λ³΅μž‘λ„λ₯Ό μ€„μ΄λŠ” 방식이닀.

πŸ“Œ Bottom-Up 방식

dp[0]λΆ€ν„° dp[n]κΉŒμ§€λ₯Ό 점화식을 μ΄μš©ν•˜μ—¬, μ•„λž˜μ—μ„œλΆ€ν„° μœ„κΉŒμ§€ λˆ„μ ν•˜μ—¬ 전체 큰 문제λ₯Ό ν•΄κ²°ν•˜λŠ” 방식이닀.

πŸ“Œ μ€‘μš”!!!

2가지 방법 쀑 2가지λ₯Ό μ „λΆ€ μ‚¬μš©ν•˜μ§€ λͺ»ν•˜κ³ , ν•˜λ‚˜λ§Œ μ‚¬μš©ν•  수 μžˆλŠ” λ¬Έμ œλ„ μ‘΄μž¬ν•œλ‹€.
λ”°λΌμ„œ μ—¬λŸ¬κ°€μ§€ 문제λ₯Ό λ‹€κ°λ„λ‘œ ν’€μ–΄λ³΄λŠ” κ²½ν—˜μ΄ μ€‘μš”ν•˜λ‹€.


πŸ”— κ΄€λ ¨ μ˜ˆμ‹œ

tag:DP



개인 곡뢀 기둝용 λΈ”λ‘œκ·Έμž…λ‹ˆλ‹€.
ν‹€λ¦¬κ±°λ‚˜ 였λ₯˜κ°€ μžˆμ„ 경우 μ œλ³΄ν•΄μ£Όμ‹œλ©΄ κ°μ‚¬ν•˜κ² μŠ΅λ‹ˆλ‹€.😁