<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%88%98%ED%95%99%EC%9D%98%EC%A0%95%EC%84%9D%2F%EC%A7%91%ED%95%A9%EC%9D%98%EC%97%B0%EC%82%B0%2F%EC%A1%B0%ED%98%84%ED%83%9C</id>
	<title>수학의정석/집합의연산/조현태 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=%EC%88%98%ED%95%99%EC%9D%98%EC%A0%95%EC%84%9D%2F%EC%A7%91%ED%95%A9%EC%9D%98%EC%97%B0%EC%82%B0%2F%EC%A1%B0%ED%98%84%ED%83%9C"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%88%98%ED%95%99%EC%9D%98%EC%A0%95%EC%84%9D/%EC%A7%91%ED%95%A9%EC%9D%98%EC%97%B0%EC%82%B0/%EC%A1%B0%ED%98%84%ED%83%9C&amp;action=history"/>
	<updated>2026-05-15T13:57:51Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.8</generator>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=%EC%88%98%ED%95%99%EC%9D%98%EC%A0%95%EC%84%9D/%EC%A7%91%ED%95%A9%EC%9D%98%EC%97%B0%EC%82%B0/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=62536&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:30, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=%EC%88%98%ED%95%99%EC%9D%98%EC%A0%95%EC%84%9D/%EC%A7%91%ED%95%A9%EC%9D%98%EC%97%B0%EC%82%B0/%EC%A1%B0%ED%98%84%ED%83%9C&amp;diff=62536&amp;oldid=prev"/>
		<updated>2021-02-07T05:30:15Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== 느낀점 및 설명 ==&lt;br /&gt;
 음.. 저번 것과 마찬가지로 입력받는 부분은 시간계산에 포함하지 않는다. (사용자의 입력시간이 결정하기 때문.)&lt;br /&gt;
 또한 오버헤드를 줄인다는 명목하에 함수로 나누지도 않았따. (귀차니즘.ㅎ)&lt;br /&gt;
 &lt;br /&gt;
 아우.. 27시간 동안 깨있었더니 죽겠... 인상태에서 만들어 졌으며, 그래서 소스가 지저분 할 수 있다.&lt;br /&gt;
&lt;br /&gt;
 알고리즘은 1과 0으로 수를 저장, 한칸씩 옮겨가면서 모든 경우의 수를 찾는 것이다.&lt;br /&gt;
 또한 예를 들어 7개일 경우는 1개일때, 2개일때, ... 7개일때 이런식으로 나누어서 연산을 한다.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| 숫자의 수&lt;br /&gt;
| 걸리는 시간(초)&lt;br /&gt;
|-&lt;br /&gt;
| 9개&lt;br /&gt;
| 0.078&lt;br /&gt;
|-&lt;br /&gt;
| 10개&lt;br /&gt;
| 0.172&lt;br /&gt;
|-&lt;br /&gt;
| 11개&lt;br /&gt;
| 0.375&lt;br /&gt;
|-&lt;br /&gt;
| 12개&lt;br /&gt;
| 0.781&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
 음 영호선배의 페이지를 보니 이 페이지의 설명이 부족한듯 해서 덧붙인다.&lt;br /&gt;
 예를 들어 9Set을 하면..&lt;br /&gt;
 배열1 - 1,2,3,4,5,6,7,8,9&lt;br /&gt;
 배열2 - 1 0 0 0 0 0 0 0 0&lt;br /&gt;
 이렇게 세팅후 1인 경우에 출력한다. 한차례연산후&lt;br /&gt;
 배열2 - 0 1 0 0 0 0 0 0 0&lt;br /&gt;
 배열2 - 0 0 1 0 0 0 0 0 0&lt;br /&gt;
 배열2 - 0 0 0 1 0 0 0 0 0&lt;br /&gt;
 배열2 - 0 0 0 0 1 0 0 0 0&lt;br /&gt;
 배열2 - 0 0 0 0 0 1 0 0 0&lt;br /&gt;
 배열2 - 0 0 0 0 0 0 1 0 0&lt;br /&gt;
 배열2 - 0 0 0 0 0 0 0 1 0&lt;br /&gt;
 배열2 - 0 0 0 0 0 0 0 0 1&lt;br /&gt;
 이런식의 연산을 거치게 된다.&lt;br /&gt;
그후 2개로 증가시켜서 계산...&lt;br /&gt;
 배열2 - 1 1 0 0 0 0 0 0 0&lt;br /&gt;
 배열2 - 1 0 1 0 0 0 0 0 0&lt;br /&gt;
 배열2 - 1 0 0 1 0 0 0 0 0&lt;br /&gt;
 배열2 - 1 0 0 0 1 0 0 0 0&lt;br /&gt;
 배열2 - 1 0 0 0 0 1 0 0 0&lt;br /&gt;
 배열2 - 1 0 0 0 0 0 1 0 0&lt;br /&gt;
 배열2 - 1 0 0 0 0 0 0 1 0&lt;br /&gt;
 배열2 - 1 0 0 0 0 0 0 0 1&lt;br /&gt;
 배열2 - 0 1 1 0 0 0 0 0 0&lt;br /&gt;
 배열2 - 0 1 0 1 0 0 0 0 0&lt;br /&gt;
 배열2 - 0 1 0 0 1 0 0 0 0&lt;br /&gt;
 배열2 - 0 1 0 0 0 1 0 0 0&lt;br /&gt;
 배열2 - 0 1 0 0 0 0 1 0 0&lt;br /&gt;
 배열2 - 0 1 0 0 0 0 0 1 0&lt;br /&gt;
 배열2 - 0 1 0 0 0 0 0 0 1&lt;br /&gt;
 배열2 - 0 0 1 1 0 0 0 0 0&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;
 #include &amp;amp;lt;time.h&amp;amp;gt;  &lt;br /&gt;
 #include &amp;amp;lt;stdio.h&amp;amp;gt;&lt;br /&gt;
 #include &amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 int* input_and_return_number(int*);&lt;br /&gt;
 void process(int*, int);&lt;br /&gt;
 &lt;br /&gt;
 int main()  &lt;br /&gt;
 {  &lt;br /&gt;
 	int time_in;   // 초기 시작 시간.  &lt;br /&gt;
 	/////&lt;br /&gt;
 	int gaesu;&lt;br /&gt;
 	int *temp_gaesu=&amp;amp;amp;gaesu;&lt;br /&gt;
 	int *numbers=input_and_return_number(&amp;amp;amp;gaesu);&lt;br /&gt;
 	/////&lt;br /&gt;
 	time_in = clock();   // 초기 시작 시간을 입력한다.&lt;br /&gt;
     process(numbers,gaesu);&lt;br /&gt;
 	free(numbers);&lt;br /&gt;
 	printf(&amp;quot;CPU CLOCKS = %d\n&amp;quot;, clock() - time_in);   // 끝났을때 시간 - 초기 시작시간 = 프로그램 실행 시간  &lt;br /&gt;
 	return 0;    // 프로그램 종료.  &lt;br /&gt;
 }  &lt;br /&gt;
 &lt;br /&gt;
 int* input_and_return_number(int *number_gaesu)&lt;br /&gt;
 {&lt;br /&gt;
 	printf(&amp;quot;입력할 숫자의 개수는?&amp;amp;gt;&amp;amp;gt;&amp;quot;);&lt;br /&gt;
 	fflush(stdin);&lt;br /&gt;
 	scanf (&amp;quot;%d&amp;quot;,number_gaesu);&lt;br /&gt;
 	int *numbers=(int*)malloc(sizeof(int)*(*number_gaesu));&lt;br /&gt;
 	for (register int i=0; i&amp;amp;lt;*number_gaesu; ++i)&lt;br /&gt;
 	{&lt;br /&gt;
 		printf(&amp;quot;%d번째의 숫자를 입력해주세요.&amp;amp;gt;&amp;amp;gt;&amp;quot;,i+1);&lt;br /&gt;
 		fflush(stdin);&lt;br /&gt;
 		scanf(&amp;quot;%d&amp;quot;,numbers+i);&lt;br /&gt;
 	}&lt;br /&gt;
 	return numbers;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void process(int *numbers, int gaesu)&lt;br /&gt;
 {&lt;br /&gt;
 	int *temp_where=(int*)malloc(sizeof(int)*gaesu);&lt;br /&gt;
 	for (register int temp_gaesu=1; temp_gaesu&amp;amp;lt;=gaesu; ++temp_gaesu)&lt;br /&gt;
 	{&lt;br /&gt;
 		int bun_ja=1; &lt;br /&gt;
 		int bun_mo=1; &lt;br /&gt;
 		for (register int i=0; i&amp;amp;lt;temp_gaesu; ++i) &lt;br /&gt;
 		{ &lt;br /&gt;
 			bun_ja*=gaesu-i; &lt;br /&gt;
 			bun_mo*=i+1; &lt;br /&gt;
 		}&lt;br /&gt;
 		int combination=bun_ja/bun_mo;&lt;br /&gt;
 		for (register int i=0; i&amp;amp;lt;gaesu; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			if (i&amp;amp;lt;temp_gaesu)&lt;br /&gt;
 				temp_where[i]=1;&lt;br /&gt;
 			else&lt;br /&gt;
 				temp_where[i]=0;&lt;br /&gt;
 		}&lt;br /&gt;
 		for (register int i=0; i&amp;amp;lt;combination; ++i)&lt;br /&gt;
 		{&lt;br /&gt;
 			printf(&amp;quot;{&amp;quot;);&lt;br /&gt;
 			int end=gaesu-1;&lt;br /&gt;
 			for (register int j=0; j&amp;amp;lt;gaesu; ++j)&lt;br /&gt;
 			{&lt;br /&gt;
 				if(1==temp_where[j])&lt;br /&gt;
 					printf(&amp;quot; %d &amp;quot;,numbers[j]);&lt;br /&gt;
 			}&lt;br /&gt;
 			printf(&amp;quot;} &amp;quot;);&lt;br /&gt;
 			int find_last=end;&lt;br /&gt;
 			for (; find_last&amp;amp;gt;=0; --find_last)&lt;br /&gt;
 			{&lt;br /&gt;
 				if (1==temp_where[find_last])&lt;br /&gt;
 					break;&lt;br /&gt;
 			}&lt;br /&gt;
 			if (find_last==end)&lt;br /&gt;
 			{&lt;br /&gt;
 				int gaesu_of_one=0;&lt;br /&gt;
 				int find_zero=0;&lt;br /&gt;
 				for (register int j=end; j&amp;amp;gt;=0; --j)&lt;br /&gt;
 				{&lt;br /&gt;
 					if (0==temp_where[j])&lt;br /&gt;
 						find_zero=1;&lt;br /&gt;
 					else&lt;br /&gt;
 					{&lt;br /&gt;
 						temp_where[j]=0;&lt;br /&gt;
 						if (0==find_zero)&lt;br /&gt;
 							++gaesu_of_one;&lt;br /&gt;
 						else&lt;br /&gt;
 						{&lt;br /&gt;
 							for (register int k=j+1; k&amp;amp;lt;j+2+gaesu_of_one; ++k )&lt;br /&gt;
 								temp_where[k]=1;&lt;br /&gt;
 							break;&lt;br /&gt;
 						}&lt;br /&gt;
 					}&lt;br /&gt;
 				}&lt;br /&gt;
 			}&lt;br /&gt;
 			else&lt;br /&gt;
 			{&lt;br /&gt;
 				temp_where[find_last]=0;&lt;br /&gt;
 				temp_where[find_last+1]=1;&lt;br /&gt;
 			}&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
 	free(temp_where);&lt;br /&gt;
 }&lt;br /&gt;
== 나에게 할말 ==&lt;br /&gt;
----&lt;br /&gt;
[[수학의정석]] [[수학의정석/집합의연산]]&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>