~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; }