#include #include #include #include #include using namespace std; static bool comp(pair& a, pair& b){ return a.second > b.second; } int solution(int a, int b, int c, int d) { int answer = 0; map m; m[a]++; m[b]++; m[c]++; m[d]++; vector> v(m.begin(), m.end()); sort(v.begin(), v.end(), comp); bool n3 = false; bool n2 = false; bool n1 = false; bool n0 = false; for (auto it = v.begin(); it != v.end(); ++it) { switch(it->second) { // 4개 같음 case 4: answer = 1111 * it->first; break; // 3개 같음 case 3: answer = 10 * it->first; n3 = true; break; // 2개 같음 case 2: // 2개 이후 2개 if (n2) { answer = (answer + it->first) * abs(answer - it->first); break; } answer = it->first; n2 = true; break; // 1개 같음 case 1: // 3개 이후 1개 if (n3) { answer = (answer + it->first) * (answer + it->first); break; } // 2개 이후 1개 if (n2) { // 2개 이후 1개 이후 1개 if (n1) { answer = answer * - it->first; break; } answer = - it->first; n1 = true; break; } // 1개 이후 1개 if (n1) { answer < it->first ? answer : it->first; break; } answer = it->first; n1 = true; break; } } return answer; }