Toggle menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

EcologicalBinPacking/황재선: Difference between revisions

From ZeroWiki
imported>Unknown
No edit summary
 
(Repair batch-0002 pages from live compare)
 
Line 10: Line 10:
  void output(int colorResult, int min);
  void output(int colorResult, int min);
   
   
  int bottle[9] = {0,};
  int bottle[9] = {0,};
  string color[6] = {"BCG", "BGC", "GBC", "GCB", "CBG", "CGB"};
  string color[6] = {"BCG", "BGC", "GBC", "GCB", "CBG", "CGB"};
  int colorIndex[6][3] = {{0,5,7}, {0,4,8}, {1,3,8}, {1,5,6}, {2,3,7}, {2,4,6}};
  int colorIndex[6][3] = {{0,5,7}, {0,4,8}, {1,3,8}, {1,5,6}, {2,3,7}, {2,4,6}};
   
   
  int main()
  int main()
Line 27: Line 27:
  for(int i = 0; i < 9; i++)
  for(int i = 0; i < 9; i++)
  {
  {
  cin >> bottle[i];
  cin >> bottle[i];
  sum += bottle[i];
  sum += bottle[i];
  if (sum > pow(2, 30))
  if (sum > pow(2, 30))
  {
  {
Line 50: Line 50:
  {
  {
  for(int i = 0; i < 9; i++)
  for(int i = 0; i < 9; i++)
  if (i == colorIndex[allColorSet][index] || i == colorIndex[allColorSet][index+1]
  if (i == colorIndex[allColorSet][index] || i == colorIndex[allColorSet][index+1]
  || i == colorIndex[allColorSet][index+2])
  || i == colorIndex[allColorSet][index+2])
  continue;
  continue;
  else
  else
  sum += bottle[i];
  sum += bottle[i];
  if (allColorSet == 0)
  if (allColorSet == 0)
  minValue = sum;
  minValue = sum;
Line 77: Line 77:
  void output(int colorResult, int min)  
  void output(int colorResult, int min)  
  {  
  {  
  cout << color[colorResult] << " " << min << endl;  
  cout << color[colorResult] << " " << min << endl;  
  }  
  }  


----
----
EcologicalBinPacking
EcologicalBinPacking

Latest revision as of 00:16, 27 March 2026

EcologicalBinPacking

#include <iostream>
#include <string>
#include <cmath>
using namespace std;

void input();
void findMinCount();
bool isMinValue(int aSum, int aMinValue);
void output(int colorResult, int min);

int bottle[9] = {0,};
string color[6] = {"BCG", "BGC", "GBC", "GCB", "CBG", "CGB"};
int colorIndex[6][3] = {{0,5,7}, {0,4,8}, {1,3,8}, {1,5,6}, {2,3,7}, {2,4,6}};

int main()
{
	input();
	findMinCount();
	
	return 0;
}

void input()
{
	int sum = 0;
	for(int i = 0; i < 9; i++)
	{
		cin >> bottle[i];
		sum += bottle[i];
		if (sum > pow(2, 30))
		{
			cout << "병의 수 초과" << endl;
			cout << "다시 입력" << endl;
			sum = 0;
			i = -1;
			continue;
		}
	}	
}

void findMinCount()
{
	int sum = 0;
	int minValue = 0;
	int index = 0;
	int colorResult = 0;
	int allColorSet = 0;
	while(allColorSet < 6)
	{
		for(int i = 0; i < 9; i++)
			if (i == colorIndex[allColorSet][index] || i == colorIndex[allColorSet][index+1]
				|| i == colorIndex[allColorSet][index+2])
				continue;
			else
				sum += bottle[i];
		if (allColorSet == 0)
			minValue = sum;

		if (isMinValue(sum, minValue))
		{
			minValue = sum;
			colorResult = allColorSet;
		}
			
		allColorSet++;
		sum = 0;
	}
	output(colorResult, minValue);	
}

bool isMinValue(int aSum, int aMinValue)
{
	return (aSum < aMinValue) ? true : false;
}

void output(int colorResult, int min) 
{ 
	cout << color[colorResult] << " " << min << endl; 
} 

EcologicalBinPacking