No older revisions available
No older revisions available
소스 ¶
~cpp
#include <iostream>
using namespace std;
#define BROWN 0
#define GREEN 1
#define CLEAR 2
int main()
{
while (true)
{
int bottle[3][3]; // 병
int bin[3]; // 통
int min_move = 0; // 최소 이동수 = 전체 병 수 - 이동하지 않는 병 수
int total_bottle = 0;
int not_move_bottle = 0;
int i, j;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
{
if (!(cin >> bottle[i][j]))
return 0;
total_bottle += bottle[i][j];
}
bin[0] = BROWN;
bin[1] = CLEAR;
bin[2] = GREEN;
not_move_bottle = bottle[0][BROWN] + bottle[1][CLEAR] + bottle[2][GREEN];
if ((bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR]) > not_move_bottle)
{
bin[0] = BROWN;
bin[1] = GREEN;
bin[2] = CLEAR;
not_move_bottle = bottle[0][BROWN] + bottle[1][GREEN] + bottle[2][CLEAR];
}
if ((bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN]) > not_move_bottle)
{
bin[0] = CLEAR;
bin[1] = BROWN;
bin[2] = GREEN;
not_move_bottle = bottle[0][CLEAR] + bottle[1][BROWN] + bottle[2][GREEN];
}
if ((bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN]) > not_move_bottle)
{
bin[0] = CLEAR;
bin[1] = GREEN;
bin[2] = BROWN;
not_move_bottle = bottle[0][CLEAR] + bottle[1][GREEN] + bottle[2][BROWN];
}
if ((bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR]) > not_move_bottle)
{
bin[0] = GREEN;
bin[1] = BROWN;
bin[2] = CLEAR;
not_move_bottle = bottle[0][GREEN] + bottle[1][BROWN] + bottle[2][CLEAR];
}
if ((bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN]) > not_move_bottle)
{
bin[0] = GREEN;
bin[1] = CLEAR;
bin[2] = BROWN;
not_move_bottle = bottle[0][GREEN] + bottle[1][CLEAR] + bottle[2][BROWN];
}
min_move = total_bottle - not_move_bottle;
for (i = 0; i < 3; i++)
{
if (bin[i] == BROWN)
cout << "B";
else if (bin[i] == CLEAR)
cout << "C";
else
cout << "G";
}
cout << " " << min_move << endl;
}
}