[FE - ConnecTo] DAY49 TILπŸ‘©πŸ»β€πŸ’»

JUNYΒ·2022λ…„ 9μ›” 20일
0

πŸ“šZeroBase ConnecTo Front-End

λͺ©λ‘ 보기
37/53
post-thumbnail

22.09.20 μˆ˜μ—… μ‹œκ°„ 쀑 슀슀둜 κ³΅λΆ€ν•œ λ‚΄μš©λ“€μ„ μ •λ¦¬ν•˜μ˜€μŠ΅λ‹ˆλ‹€ 😊
ν”Όλ“œλ°±μ€ μ–Έμ œλ‚˜ ν™˜μ˜μž…λ‹ˆλ‹€! 🍊

DPλž€?

DPλŠ” λ‹€μ΄λ‚˜λ―Ή ν”„λ‘œκ·Έλž˜λ°(동적 κ³„νšλ²•)이라고도 ν•˜λ©°, 기본적인 μ•„μ΄λ””μ–΄λ‘œ ν•˜λ‚˜μ˜ 큰 문제λ₯Ό μ—¬λŸ¬ 개의 μž‘μ€ 문제둜 λ‚˜λˆ„μ–΄μ„œ κ·Έ κ²°κ³Όλ₯Ό μ €μž₯ν•˜μ—¬ λ‹€μ‹œ 큰 문제λ₯Ό ν•΄κ²°ν•  λ•Œ μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ νŠΉμ •ν•œ μ•Œκ³ λ¦¬μ¦˜μ΄ μ•„λ‹Œ ν•˜λ‚˜μ˜ 문제 ν•΄κ²° νŒ¨λŸ¬λ‹€μž„μœΌλ‘œ λ³Ό 수 μžˆμŠ΅λ‹ˆλ‹€.


DPλ₯Ό μ™œ μ“°λŠ” 것인가?

일반적인 μž¬κ·€λ°©μ‹κ³Ό 맀우 μœ μ‚¬ν•˜μ§€λ§Œ, 일반적인 μž¬κ·€λ₯Ό λ‹¨μˆœνžˆ μ‚¬μš©μ‹œ, λ™μΌν•œ μž‘μ€ λ¬Έμ œλ“€μ΄ μ—¬λŸ¬ 번 λ°˜λ³΅λ˜μ–΄ λΉ„νš¨μœ¨μ μΈ 계산이 될 수 μžˆλ‹€λŠ” 차이점이 μžˆμŠ΅λ‹ˆλ‹€.

DPλ₯Ό μ΄μš©ν•˜λ©΄, ν•œ 번 κ΅¬ν•œ μž‘μ€ 문제의 κ²°κ³Ό 값을 μ €μž₯해두고 μž¬μ‚¬μš©μ΄ κ°€λŠ₯ν•œλ°, μ΄λ ‡κ²Œ λ˜μ—ˆμ„ λ•Œ, λ°˜λ³΅ν•  ν•„μš”μ—†μ΄ 효율적으둜 문제λ₯Ό ν•΄κ²°ν•  수 있게 λ©λ‹ˆλ‹€.

μ‹œκ°„ λ³΅μž‘λ„λ₯Ό κΈ°μ€€μœΌλ‘œλŠ” O(n2n^2) β†’ O(f(n)f(n))으둜 κ°œμ„ μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.


DPλŠ” μ–Έμ œ μ‚¬μš©μ΄ κ°€λŠ₯ν•œκ°€?

  1. κ²ΉμΉ˜λŠ” λΆ€λΆ„ 문제(Overlapping Subproblems)

    DPλŠ” 기본적으둜 문제λ₯Ό λ‚˜λˆ„κ³  κ·Έ 문제의 κ²°κ³Ό 값을 μž¬ν™œμš©ν•΄μ„œ 전체 닡을 κ΅¬ν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ λ™μΌν•œ μž‘μ€ λ¬Έμ œλ“€μ΄ λ°˜λ³΅ν•˜μ—¬ λ‚˜νƒ€λ‚˜λŠ” κ²½μš°μ— μ‚¬μš©μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€.

    DPλŠ” λΆ€λΆ„ 문제의 κ²°κ³Όλ₯Ό μ €μž₯ν•˜μ—¬ μž¬κ³„μ‚° ν•  수 μžˆμ–΄μ•Ό ν•˜λŠ”λ°, ν•΄λ‹Ή λΆ€λΆ„ λ¬Έμ œκ°€ 반볡적으둜 λ‚˜νƒ€λ‚˜μ§€ μ•ŠλŠ”λ‹€λ©΄, μž¬μ‚¬μš©μ΄ λΆˆκ°€λŠ₯ν•˜λ―€λ‘œ λΆ€λΆ„ λ¬Έμ œκ°€ μ€‘λ³΅λ˜μ§€ μ•ŠλŠ” κ²½μš°μ—λŠ” μ‚¬μš©ν•  수 μ—†μŠ΅λ‹ˆλ‹€.

  2. 졜적 λΆ€λΆ„ ꡬ쑰(Optimal Substructure)

    λΆ€λΆ„ 문제의 졜적 κ²°κ³Ό 값을 μ‚¬μš©ν•΄ 전체 문제의 졜적 κ²°κ³Όλ₯Ό λ‚Ό 수 μžˆλŠ” 경우λ₯Ό μ˜λ―Έν•©λ‹ˆλ‹€. κ·Έλž˜μ„œ νŠΉμ • 문제의 정닡은 문제의 크기에 상관없이 항상 λ™μΌν•©λ‹ˆλ‹€.


DP μ‚¬μš©ν•˜κΈ°

DPλŠ” νŠΉμ •ν•œ κ²½μš°μ— μ‚¬μš©ν•˜λŠ” μ•Œκ³ λ¦¬μ¦˜μ΄ μ•„λ‹ˆλΌ, ν•˜λ‚˜μ˜ λ°©λ²•λ‘ μ΄λ―€λ‘œ λ‹€μ–‘ν•œ λ¬Έμ œν•΄κ²°μ— 쓰일 수 μžˆμŠ΅λ‹ˆλ‹€.

보톡은 DPλ₯Ό μ‚¬μš©ν•˜κΈ° μ „μ—λŠ” μ•„λž˜μ˜ 과정을 κ±°μ³μ„œ 진행할 수 μžˆμŠ΅λ‹ˆλ‹€.

  1. DP둜 ν’€ 수 μžˆλŠ” λ¬Έμ œμΈμ§€ ν™•μΈν•˜κΈ°
  2. 문제의 λ³€μˆ˜ νŒŒμ•…
  3. λ³€μˆ˜ κ°„ 관계식 λ§Œλ“€κΈ°(점화식)
  4. λ©”λͺ¨ν•˜κΈ°
  5. κΈ°μ € μƒνƒœ νŒŒμ•…ν•˜κΈ°
  6. κ΅¬ν˜„ν•˜κΈ°

πŸ“šΒ μΆœμ²˜

profile
μ„±μž₯ν•˜λŠ” 개발자🌼

0개의 λŒ“κΈ€