<?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=EcologicalBinPacking%2F%EA%B0%95%ED%9D%AC%EA%B2%BD</id>
	<title>EcologicalBinPacking/강희경 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://mediawiki.zeropage.org/index.php?action=history&amp;feed=atom&amp;title=EcologicalBinPacking%2F%EA%B0%95%ED%9D%AC%EA%B2%BD"/>
	<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=EcologicalBinPacking/%EA%B0%95%ED%9D%AC%EA%B2%BD&amp;action=history"/>
	<updated>2026-05-15T00:34:48Z</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=EcologicalBinPacking/%EA%B0%95%ED%9D%AC%EA%B2%BD&amp;diff=84327&amp;oldid=prev</id>
		<title>Maintenance script: Repair batch-0002 pages from live compare</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=EcologicalBinPacking/%EA%B0%95%ED%9D%AC%EA%B2%BD&amp;diff=84327&amp;oldid=prev"/>
		<updated>2026-03-27T00:16:02Z</updated>

		<summary type="html">&lt;p&gt;Repair batch-0002 pages from live compare&lt;/p&gt;
&lt;a href=&quot;https://mediawiki.zeropage.org/index.php?title=EcologicalBinPacking/%EA%B0%95%ED%9D%AC%EA%B2%BD&amp;amp;diff=84327&amp;amp;oldid=31446&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
	<entry>
		<id>https://mediawiki.zeropage.org/index.php?title=EcologicalBinPacking/%EA%B0%95%ED%9D%AC%EA%B2%BD&amp;diff=31446&amp;oldid=prev</id>
		<title>imported&gt;Unknown at 05:23, 7 February 2021</title>
		<link rel="alternate" type="text/html" href="https://mediawiki.zeropage.org/index.php?title=EcologicalBinPacking/%EA%B0%95%ED%9D%AC%EA%B2%BD&amp;diff=31446&amp;oldid=prev"/>
		<updated>2021-02-07T05:23:10Z</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;__TOC__&lt;br /&gt;
== 리팩토링 전 ==&lt;br /&gt;
 #include&amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 using namespace std;&lt;br /&gt;
 &lt;br /&gt;
 int bottle[9];&lt;br /&gt;
 int noMove[6];&lt;br /&gt;
 int movedBottle;&lt;br /&gt;
 &lt;br /&gt;
 int input();&lt;br /&gt;
 void setNotMove();&lt;br /&gt;
 int minimumMove();&lt;br /&gt;
 void output(int noMove);&lt;br /&gt;
 void main()&lt;br /&gt;
 {   &lt;br /&gt;
 	output(minimumMove());&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int input()&lt;br /&gt;
 {&lt;br /&gt;
 	int totalBottle = 0;&lt;br /&gt;
 	for(int i = 0; i &amp;amp;lt; 9; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		cin &amp;amp;gt;&amp;amp;gt; bottle[i];&lt;br /&gt;
 		totalBottle += bottle[i];&lt;br /&gt;
 		cin.get();&lt;br /&gt;
 	}&lt;br /&gt;
 	return totalBottle;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void setNotMove()&lt;br /&gt;
 {&lt;br /&gt;
 	noMove[0] = bottle[0] + bottle[4] + bottle[8];&lt;br /&gt;
 	noMove[1] = bottle[0] + bottle[5] + bottle[7];&lt;br /&gt;
 	noMove[2] = bottle[1] + bottle[3] + bottle[8];&lt;br /&gt;
 	noMove[3] = bottle[1] + bottle[5] + bottle[6];&lt;br /&gt;
 	noMove[4] = bottle[2] + bottle[3] + bottle[7];&lt;br /&gt;
 	noMove[5] = bottle[2] + bottle[4] + bottle[6];&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 int minimumMove()&lt;br /&gt;
 {&lt;br /&gt;
 	int MAX = 0;&lt;br /&gt;
 	movedBottle = input();&lt;br /&gt;
 	int minimum;&lt;br /&gt;
 	setNotMove();&lt;br /&gt;
 	for(int i = 0; i &amp;amp;lt; 6; i++)&lt;br /&gt;
 	{&lt;br /&gt;
 		if(noMove[i] &amp;amp;gt; MAX)&lt;br /&gt;
 		{&lt;br /&gt;
 			MAX = noMove[i];&lt;br /&gt;
 			minimum = i;&lt;br /&gt;
 		}&lt;br /&gt;
 	}&lt;br /&gt;
     movedBottle -= MAX; &lt;br /&gt;
     cout &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	return minimum;&lt;br /&gt;
 }&lt;br /&gt;
 &lt;br /&gt;
 void output(int noMove)&lt;br /&gt;
 {&lt;br /&gt;
 	switch(noMove)&lt;br /&gt;
 	{&lt;br /&gt;
 		case 0:&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;BGC &amp;quot;;&lt;br /&gt;
 			break;&lt;br /&gt;
 		case 1:&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;BCG &amp;quot;;&lt;br /&gt;
 			break;&lt;br /&gt;
 		case 2:&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;GBC &amp;quot;;&lt;br /&gt;
 			break;&lt;br /&gt;
 		case 3:&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;GCB &amp;quot;;&lt;br /&gt;
 			break;&lt;br /&gt;
 		case 4:&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;CBG &amp;quot;;&lt;br /&gt;
 			break;&lt;br /&gt;
 		case 5:&lt;br /&gt;
 			cout &amp;amp;lt;&amp;amp;lt; &amp;quot;CGB &amp;quot;;&lt;br /&gt;
 	}&lt;br /&gt;
 	cout &amp;amp;lt;&amp;amp;lt; movedBottle &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 }&lt;br /&gt;
&lt;br /&gt;
== 리팩토링 후 ==&lt;br /&gt;
 #include&amp;amp;lt;iostream&amp;amp;gt;&lt;br /&gt;
 #include&amp;amp;lt;string&amp;amp;gt;&lt;br /&gt;
 using namespace std; &lt;br /&gt;
 &lt;br /&gt;
 #define NumberOfSlots 9&lt;br /&gt;
 #define NumberOfCases 6&lt;br /&gt;
 #define NumberOfResultInformations 2&lt;br /&gt;
  &lt;br /&gt;
 int* input(); &lt;br /&gt;
 int* setNotMove(int *aSlots); &lt;br /&gt;
 int* minimumMove(int *aSlots); &lt;br /&gt;
 void output(int *aInformation); &lt;br /&gt;
 &lt;br /&gt;
 bool isCorrectInput;&lt;br /&gt;
 &lt;br /&gt;
 void main() &lt;br /&gt;
 {&lt;br /&gt;
     isCorrectInput = true;&lt;br /&gt;
     output(minimumMove(input())); &lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 int* input() &lt;br /&gt;
 {&lt;br /&gt;
     int* slots = new int[NumberOfSlots + 1];&lt;br /&gt;
     int totalBottle = 0; &lt;br /&gt;
     for(int i = 0; i &amp;amp;lt; NumberOfSlots; i++) &lt;br /&gt;
     { &lt;br /&gt;
         if(!(cin &amp;amp;gt;&amp;amp;gt; slots[i])){&lt;br /&gt;
             isCorrectInput = false;&lt;br /&gt;
         }&lt;br /&gt;
         totalBottle += slots[i];  &lt;br /&gt;
     }&lt;br /&gt;
     char temp;&lt;br /&gt;
     cin.get(temp);&lt;br /&gt;
     if(temp != &amp;#039;\n&amp;#039;)&lt;br /&gt;
         isCorrectInput = false;&lt;br /&gt;
     slots[9] = totalBottle;&lt;br /&gt;
     return slots; &lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 int* setNotMove(int *aSlots) &lt;br /&gt;
 { &lt;br /&gt;
     int* noMove = new int[NumberOfCases];&lt;br /&gt;
     noMove[0] = aSlots[0] + aSlots[4] + aSlots[8]; &lt;br /&gt;
     noMove[1] = aSlots[0] + aSlots[5] + aSlots[7]; &lt;br /&gt;
     noMove[2] = aSlots[1] + aSlots[3] + aSlots[8]; &lt;br /&gt;
     noMove[3] = aSlots[1] + aSlots[5] + aSlots[6]; &lt;br /&gt;
     noMove[4] = aSlots[2] + aSlots[3] + aSlots[7]; &lt;br /&gt;
     noMove[5] = aSlots[2] + aSlots[4] + aSlots[6];&lt;br /&gt;
     return noMove;&lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 int* minimumMove(int *aSlots) &lt;br /&gt;
 {	&lt;br /&gt;
     if(!isCorrectInput){&lt;br /&gt;
         delete aSlots;&lt;br /&gt;
         int *temp = new int;&lt;br /&gt;
         return temp;&lt;br /&gt;
     }&lt;br /&gt;
 	&lt;br /&gt;
     int MAX = 0;  &lt;br /&gt;
     int minimumCase; &lt;br /&gt;
     int* pNoMove = setNotMove(aSlots); &lt;br /&gt;
     for(int i = 0; i &amp;amp;lt; NumberOfCases; i++) &lt;br /&gt;
     { &lt;br /&gt;
         if(pNoMove[i] &amp;amp;gt; MAX) &lt;br /&gt;
         { &lt;br /&gt;
 	   MAX = pNoMove[i]; &lt;br /&gt;
             minimumCase = i; &lt;br /&gt;
         } &lt;br /&gt;
     } &lt;br /&gt;
     aSlots[9] -= MAX;&lt;br /&gt;
     int *resultInformation = new int[NumberOfResultInformations];&lt;br /&gt;
     resultInformation[0] = minimumCase;&lt;br /&gt;
     resultInformation[1] = aSlots[9];&lt;br /&gt;
     delete aSlots;&lt;br /&gt;
     delete pNoMove;&lt;br /&gt;
     return resultInformation; &lt;br /&gt;
 } &lt;br /&gt;
  &lt;br /&gt;
 void output(int *aInformation) &lt;br /&gt;
 {&lt;br /&gt;
     if(isCorrectInput)&lt;br /&gt;
     {&lt;br /&gt;
         string colorsCombination[] = {&amp;quot;BGC&amp;quot;, &amp;quot;BCG&amp;quot;, &amp;quot;GBC&amp;quot;, &amp;quot;GCB&amp;quot;, &amp;quot;CBG&amp;quot;, &amp;quot;CGB&amp;quot;};&lt;br /&gt;
         cout &amp;amp;lt;&amp;amp;lt; colorsCombination[aInformation[0]] &amp;amp;lt;&amp;amp;lt; aInformation[1] &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
     }&lt;br /&gt;
     else&lt;br /&gt;
     {&lt;br /&gt;
         cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잘못된 입력으로 프로그램을 종료합니다.\n&amp;quot;;&lt;br /&gt;
     }&lt;br /&gt;
     delete aInformation;&lt;br /&gt;
 }&lt;br /&gt;
== 리팩토링의 목적과 결과 ==&lt;br /&gt;
 *전역변수 남발로 인한 공간(memory)낭비 없애기&lt;br /&gt;
 *예외처리&lt;br /&gt;
 *불분명한 변수명 변경(가독성)&lt;br /&gt;
 *속도의 개선이 조금이나마 이루어짐 &lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
 import &amp;amp;lt;string&amp;amp;gt;&lt;br /&gt;
 &lt;br /&gt;
 void output(int *aInformation) &lt;br /&gt;
 {&lt;br /&gt;
 	if(isCorrectInput)&lt;br /&gt;
 	{&lt;br /&gt;
 		string colorsCombination[] = {&amp;quot;BGC&amp;quot;, &amp;quot;BCG&amp;quot;, &amp;quot;GBC&amp;quot;, &amp;quot;GCB&amp;quot;, &amp;quot;CBG&amp;quot;, &amp;quot;CGB&amp;quot;};&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; colorsCombination[aInformation[0]] &amp;amp;lt;&amp;amp;lt; aInformation[1] &amp;amp;lt;&amp;amp;lt; endl;&lt;br /&gt;
 	}&lt;br /&gt;
 	else&lt;br /&gt;
 	{&lt;br /&gt;
 		cout &amp;amp;lt;&amp;amp;lt; &amp;quot;잘못된 입력으로 프로그램을 종료합니다.\n&amp;quot;;&lt;br /&gt;
 	}&lt;br /&gt;
 	delete aInformation;&lt;br /&gt;
 }&lt;br /&gt;
output() 함수도 이런식으로 리펙토링할 수 있다. --재동&lt;br /&gt;
 오~ 굿 어드바이스요 --[[강희경]]&lt;br /&gt;
----&lt;br /&gt;
&lt;/div&gt;</summary>
		<author><name>imported&gt;Unknown</name></author>
	</entry>
</feed>