SlideShare a Scribd company logo
1 of 5
Download to read offline
Week4. 분할정복 접근법
재귀적 구조 활용해 알고리즘을 설계하는 기법 중 하나
분할 정복 결합
문제를
작은 부분
문제들로 분할
부분 문제들을
재귀적으로 해결.
* 문제가 충분히
작을 경우, 직접 해결
찾은 해들을
결합해
원래 문제의
해답 도출
재귀 대상: 문제가 충분히 커서 재귀적으로 풀 수 있는 상태
Base case: 부분 문제가 충분히 작아져 재귀 호출을 할 수 없는 상태
예시2. 최대 부분 수열 문제
예시2. 최대 부분 수열 문제의 분할 정복
수열을 mid를 기준으로 둘로 나누었을 때,
최대 부분 수열은
1. 앞에 있거나
2. 뒤에 있거나
3. 중간에 걸쳐있거나
A[mid] 를 무조건 포함한다.
A[i..mid]가 최대인 i를 찾고
A[mid+1..j]가 최대인 j를 찾아
합치면 된다.
중간에 걸친 최대 부분 수열 찾기
Mid 에서 low로 향하며 i찾기
Mid+1 에서 high로 향하며 j찾기
둘을 합친 값 리턴
예시2. 최대 부분 수열 문제의 분할 정복
원소가 하나만 남았을 경우,
최대부분 수열은 자기 자신
오른쪽의 최대 부분 수열 찾기
(재귀호출)
왼쪽의 최대 부분 수열 찾기
(재귀호출)
중간에 걸친 최대 부분 수열 찾기
O(n)
3개의 결과 중 최대값 찾기

More Related Content

More from HansolJang5

Week9 certificate
Week9 certificateWeek9 certificate
Week9 certificateHansolJang5
 
Week7. sso and oauth
Week7. sso and oauthWeek7. sso and oauth
Week7. sso and oauthHansolJang5
 
Week1. 물리계층과 데이터링크 계층
Week1. 물리계층과 데이터링크 계층Week1. 물리계층과 데이터링크 계층
Week1. 물리계층과 데이터링크 계층HansolJang5
 

More from HansolJang5 (6)

Week9 certificate
Week9 certificateWeek9 certificate
Week9 certificate
 
Week8 code
Week8 codeWeek8 code
Week8 code
 
Week7. sso and oauth
Week7. sso and oauthWeek7. sso and oauth
Week7. sso and oauth
 
Week3.network
Week3.networkWeek3.network
Week3.network
 
Week2.network
Week2.networkWeek2.network
Week2.network
 
Week1. 물리계층과 데이터링크 계층
Week1. 물리계층과 데이터링크 계층Week1. 물리계층과 데이터링크 계층
Week1. 물리계층과 데이터링크 계층
 

Week4.maximumsubarray

  • 1. Week4. 분할정복 접근법 재귀적 구조 활용해 알고리즘을 설계하는 기법 중 하나 분할 정복 결합 문제를 작은 부분 문제들로 분할 부분 문제들을 재귀적으로 해결. * 문제가 충분히 작을 경우, 직접 해결 찾은 해들을 결합해 원래 문제의 해답 도출 재귀 대상: 문제가 충분히 커서 재귀적으로 풀 수 있는 상태 Base case: 부분 문제가 충분히 작아져 재귀 호출을 할 수 없는 상태
  • 2. 예시2. 최대 부분 수열 문제
  • 3. 예시2. 최대 부분 수열 문제의 분할 정복 수열을 mid를 기준으로 둘로 나누었을 때, 최대 부분 수열은 1. 앞에 있거나 2. 뒤에 있거나 3. 중간에 걸쳐있거나 A[mid] 를 무조건 포함한다. A[i..mid]가 최대인 i를 찾고 A[mid+1..j]가 최대인 j를 찾아 합치면 된다.
  • 4. 중간에 걸친 최대 부분 수열 찾기 Mid 에서 low로 향하며 i찾기 Mid+1 에서 high로 향하며 j찾기 둘을 합친 값 리턴
  • 5. 예시2. 최대 부분 수열 문제의 분할 정복 원소가 하나만 남았을 경우, 최대부분 수열은 자기 자신 오른쪽의 최대 부분 수열 찾기 (재귀호출) 왼쪽의 최대 부분 수열 찾기 (재귀호출) 중간에 걸친 최대 부분 수열 찾기 O(n) 3개의 결과 중 최대값 찾기