μ•Œκ³ λ¦¬μ¦˜/κΈ°λ³ΈκΈ° λ‹€μ§€κΈ°

[μ•Œκ³ λ¦¬μ¦˜] 뢄할정볡 - Divide and Conquer

λ˜νš¨λ‹ˆ 2020. 2. 5. 18:14

λΆ„ν•  μ •λ³΅λ²•μ΄λž€? 문제의 사둀λ₯Ό 2개 μ΄μƒμ˜ 더 μž‘μ€ μ‚¬λ‘€λ‘œ λ‚˜λˆ„μ–΄(divide) 각 μž‘μ€ 사둀에 λŒ€ν•œ ν•΄λ‹΅(conquer)을 μ‰½κ²Œ 얻을 수 있으면 μ΄λ“€μ˜ 해닡을 κ²°ν•©(combine)ν•˜μ—¬ μ›λ¬Έμ œμ˜ 해닡을 μ–»λŠ” 방식.

 

- 문제λ₯Ό λ‚˜λˆ„λŠ” 과정은 해닡을 μ‰½κ²Œ 얻을 λ•ŒκΉŒμ§€ 반볡적으둜 μ μš©ν•œλ‹€. 

- ν•˜ν–₯식(top-down) μ ‘κ·Ό 방법이닀.

  • λΆ„ν• (Divide) : ν•΄κ²°ν•˜κΈ° 쉽도둝 문제λ₯Ό μ—¬λŸ¬ 개의 μž‘μ€ λΆ€λΆ„μœΌλ‘œ λ‚˜λˆˆλ‹€.
  • 정볡(Conquer): λ‚˜λˆˆ μž‘μ€ 문제λ₯Ό 각각 ν•΄κ²°ν•œλ‹€. 
  • 톡합(Combine): (ν•„μš”ν•˜λ‹€λ©΄) ν•΄κ²°λœ 해닡을 λͺ¨μ€λ‹€.

- 보톡 μž¬κ·€ ν”„λ‘œμ‹œμ €λ‘œ λ¨Όμ € ν•΄κ²°ν•œ λ‹€μŒμ— 보닀 효율적인 반볡 ν”„λ‘œμ‹œμ €κ°€ μ—†λŠ”μ§€ κ²€ν† ν•œλ‹€. 

 

- λŒ€ν‘œμ μΈ μ•Œκ³ λ¦¬μ¦˜

  • 이진 검색(BinarySearch)
  • 합병 μ •λ ¬(MergeSort) 
  • λΉ λ₯Έ μ •λ ¬(QuickSort)
  • μ΅œλŒ€-μ΅œμ†Œκ°’ μ°ΎκΈ°

 

λ°˜μ‘ν˜•