~cpp
//2. 재활용 용기 저장문제
//기본 아이디어
//--->재활용 통의 병의 갯수를 우선 모두 더한다. total변수에 넣는다.
//--->각각의 재활용 통에서 서로 다른색깔의 병을 모두뺏을때의 조합이
//가장 큰 수인 조합을 찾아낸다. max()함수를 통해 리턴값을 얻는다.
#include<iostream>
using namespace std;
int container[9]; //용기에 들어있는 병을 입력 받는다.
int total=0; //용기에 들어있는 병의 총개수를 센다.
int ch_number; //최소 이동 횟수를 저장한다.
char bgc[3]={'B','G','C'};
char save[4]={"NNN"}; //나중에 결과값을 출력시 사용
int max(int* array);
void main()
{
cout<<"용기에 담겨 있는 병의 개수를 차례대로 넣으세요"<<endl;
for(int i=0 ; i<9 ; i++)
{
cin>>container[i];
total+=container[i];
}
ch_number = total - max(container);
cout<<endl;
cout<<save<<" "<<ch_number;
cout<<endl;
}
int max(int* array)
{
int temp=0;//각각의 조합에 대한 현재값을 저장한다.
int max=0; //여러 조합에 대해 가장 큰 값을 저장한다.
for(int i=0 ; i<3 ; i++)
{
for(int j=3 ; j<6 ; j++)
{
if(j%3 == i)
continue;
else
{
temp+=array[i];
temp+=array[j];
temp+=array[12-(i+j)];
}
if(temp > max)
{
max=temp;
save[0]=bgc[i];
save[1]=bgc[(j%3)];
save[2]=bgc[3-((j%3)+i)];
}
temp=0;
}
}
return max;
}