<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EB%B6%84%ED%95%A0_%EC%A0%95%EB%B3%B5_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</id>
	<title>분할 정복 알고리즘 - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://www.gaonwiki.com/w/index.php?action=history&amp;feed=atom&amp;title=%EB%B6%84%ED%95%A0_%EC%A0%95%EB%B3%B5_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98"/>
	<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EB%B6%84%ED%95%A0_%EC%A0%95%EB%B3%B5_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&amp;action=history"/>
	<updated>2026-07-07T03:40:50Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://www.gaonwiki.com/w/index.php?title=%EB%B6%84%ED%95%A0_%EC%A0%95%EB%B3%B5_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&amp;diff=106817&amp;oldid=prev</id>
		<title>Gaon12: 시작</title>
		<link rel="alternate" type="text/html" href="https://www.gaonwiki.com/w/index.php?title=%EB%B6%84%ED%95%A0_%EC%A0%95%EB%B3%B5_%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98&amp;diff=106817&amp;oldid=prev"/>
		<updated>2023-03-28T01:54:05Z</updated>

		<summary type="html">&lt;p&gt;시작&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 개요 ==&lt;br /&gt;
주어진 문제를 작은 사례로 나누고(Divide), 각각의 작은 문제들을 해결하여 정복(Conquer)하는 방법이다. 분할 정복법은 문제의 사례를 2개 이상의 더 작은 사례로 나눈다. 이 작은 사례는 주로 원래 문제에서 따온다. 나눈 작은 사례의 해답을 바로 얻을 수 있으면 해를 구하고 아니면  더 작은 사례로 나눈다.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;해를 구할 수 있을 만큼 충분히 더 작은 사례로 나누어 해결하는 방법&amp;#039;&amp;#039;&amp;#039;이다.&lt;br /&gt;
&lt;br /&gt;
분할 정복법은 하향식(top-down) 접근 방법으로 최상위 사례의 해답은 아래로 내려가면서 작은 사례에 대한 해답을 구함으로써 구한다.&lt;br /&gt;
&lt;br /&gt;
== 설계전략 ==&lt;br /&gt;
# 문제 사례를 하나 이상의 작은 사례로 &amp;#039;&amp;#039;&amp;#039;분할(Divide)&amp;#039;&amp;#039;&amp;#039;한다.&lt;br /&gt;
# 작은 사례들을 각각 &amp;#039;&amp;#039;&amp;#039;정복(Conquer)&amp;#039;&amp;#039;&amp;#039;한다. 작은 사례가 충분히 작지 않은 이상 재귀를 사용한다.&lt;br /&gt;
# 필요하다면, 작은 사례에 대한 해답을 &amp;#039;&amp;#039;&amp;#039;통합(Combine)&amp;#039;&amp;#039;&amp;#039;하여 원래 사례의 해답을 구한다.&lt;br /&gt;
&lt;br /&gt;
== 분할 정복 사용 예 ==&lt;br /&gt;
* 이분검색&lt;br /&gt;
* 합병정렬&lt;br /&gt;
* 퀵정렬&lt;br /&gt;
* 최대값 찾기&lt;br /&gt;
* 임계값의 결정&lt;br /&gt;
* 쉬트라센 행렬곱셈 알고리즘 등&lt;br /&gt;
&lt;br /&gt;
=== 이분검색 ===&lt;br /&gt;
문제 : 10개의 정렬된 배열에서 값을 21가진 인덱스를 찾아라.&lt;br /&gt;
&lt;br /&gt;
 low: 0&lt;br /&gt;
 high: 9&lt;br /&gt;
 middle: (low + high)/2 =&amp;gt; 4.5 =&amp;gt; 4&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(0)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(1)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(2)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(3)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(4)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(5)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(6)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(7)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(8)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(9)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 5 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 7 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 10 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 12 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 16 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 20 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 21 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 25 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 28 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 30&lt;br /&gt;
|}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 low: 4 + 1 =&amp;gt; 5&lt;br /&gt;
 high: 9&lt;br /&gt;
 middle: 7&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(0)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(1)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(2)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(3)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(4)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(5)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(6)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(7)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(8)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(9)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 5 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 7 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 10 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 12 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 16 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 20 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 21 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 25 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 28 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 30&lt;br /&gt;
|}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 low: 5&lt;br /&gt;
 high: 7 - 1 = 6&lt;br /&gt;
 middle: 5&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(0)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(1)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(2)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(3)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(4)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(5)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #00BCD4; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(6)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(7)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(8)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(9)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 5 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 7 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 10 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 12 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 16 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 20 || style=&amp;quot;background-color: #CAF4FA; color: black; font-size: bold;&amp;quot; | 21 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 25 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 28 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 30&lt;br /&gt;
|}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
 low: 5 + 1 = 6&lt;br /&gt;
 high: 6&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
| style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(0)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(1)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(2)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(3)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(4)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(5)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #1FFF3D; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(6)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(7)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(8)&amp;#039;&amp;#039;&amp;#039; || style=&amp;quot;background-color: #DB1A1A; color: white; font-size: bold;&amp;quot; | &amp;#039;&amp;#039;&amp;#039;A(9)&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
|-&lt;br /&gt;
| style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 5 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 7 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 10 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 12 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 16 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 20 || style=&amp;quot;background-color: #02F758; color: black; font-size: bold;&amp;quot; | 21 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 25 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 28 || style=&amp;quot;background-color: #FF8800; color: black; font-size: bold;&amp;quot; | 30&lt;br /&gt;
|}&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;#039;java&amp;#039;&amp;gt;&lt;br /&gt;
int[] arr = {5, 7, 10, 12, 16, 20, 21, 25, 28, 30}&lt;br /&gt;
&lt;br /&gt;
public int binarySearch(int target) {&lt;br /&gt;
    low = 0;&lt;br /&gt;
    high = arr.length;&lt;br /&gt;
    while (low &amp;lt;= high) {&lt;br /&gt;
		middle = (low + high) / 2;&lt;br /&gt;
		if (target == array[middle]) {&lt;br /&gt;
			return middle;&lt;br /&gt;
		} else if (target &amp;gt; array[middle]) {&lt;br /&gt;
			low = middle + 1;&lt;br /&gt;
		} else {&lt;br /&gt;
			high = middle - 1;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
    return -1; //not found&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== 장단점 ==&lt;br /&gt;
=== 장점 ===&lt;br /&gt;
* 문제를 나눔으로써 어려운 문제를 해결할 수 있다는 엄청나게 중요한 장점이 있다. &lt;br /&gt;
* 이 방식이 그대로 사용되는 효율적인 알고리즘들도 여럿 있으며, 문제를 나누어 해결한다는 특징상 &amp;#039;&amp;#039;&amp;#039;병렬적으로 문제를 해결&amp;#039;&amp;#039;&amp;#039;하는 데 큰 강점이 있다.&lt;br /&gt;
&lt;br /&gt;
=== 단점 ===&lt;br /&gt;
* 함수를 재귀적으로 호출한다는 점에서 함수 호출로 인한 &amp;#039;&amp;#039;&amp;#039;오버헤드가 발생&amp;#039;&amp;#039;&amp;#039;한다.&lt;br /&gt;
* 스택에 다양한 데이터를 보관하고 있어야 하므로 &amp;#039;&amp;#039;&amp;#039;[[스택 오버플로우]]가 발생&amp;#039;&amp;#039;&amp;#039;하거나 &amp;#039;&amp;#039;&amp;#039;과도한 메모리 사용&amp;#039;&amp;#039;&amp;#039;을 하게 된다.&lt;br /&gt;
&lt;br /&gt;
[https://kimch3617.tistory.com/entry/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98-%EB%B6%84%ED%95%A0%EC%A0%95%EB%B3%B5%EB%B2%95-Divide-and-Conquer CC BY로 가져옴]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--분류--&amp;gt;&lt;br /&gt;
[[분류:알고리즘]]&lt;/div&gt;</summary>
		<author><name>Gaon12</name></author>
	</entry>
</feed>