#include <algorithm>
#include <vector>
using namespace std;
// Test해볼 Case의 번호를 일치시킵니다.
#define CASE_14 1
vector<int> solution(vector<int> lottos, vector<int> win_nums);
int main()
{
// Test Case의 전처리
#ifdef CASE_1
vector<int> lottos = { 44, 1, 0, 0, 31, 25 };
vector<int> win_nums = { 31, 10, 45, 1, 6, 19 };
#elif CASE_2
vector<int> lottos = { 0, 0, 0, 0, 0, 0 };
vector<int> win_nums = { 38, 19, 20, 40, 15, 25 };
#elif CASE_3
vector<int> lottos = { 45, 4, 35, 20, 3, 9 };
vector<int> win_nums = { 20, 9, 3, 45, 4, 35 };
#elif CASE_14
vector<int> lottos = { 1,2,3,4,5,6 };
vector<int> win_nums = { 7,8,9,10,11,12 };
#endif
vector<int> answer = solution(lottos, win_nums);
return 1;
}
vector<int> solution(vector<int> lottos, vector<int> win_nums)
{
vector<int> answer(2);
int n0(0), n1(0), n2(0); // 지워진 숫자 , 최고 등수로 나올값 , 최저 등수로 나올값
// 45개의 숫자를 선택할수 있으나, 0인 경우를 포함하기 떄문에 46으로 사이즈를 설정합니다.
vector<int> vComp(46);
for (auto it : lottos) vComp[it] += 1;
// 모든 숫자가 지워진 경우
if (vComp[0] == 6)
{
answer[0] = 1;
answer[1] = 6;
return answer;
}
else
n0 = vComp[0];
for (auto it : win_nums) vComp[it] += 1;
for (int i = 1; i < vComp.size(); ++i)
{
if (vComp.at(i) == 2)
n2 += 1;
}
if (n2 == 6) // 모든 숫자 일치
{
answer[0] = 1;
answer[1] = 1;
}
else // 2~6등
{
n1 = n2 + n0;
if (n1 == 0)
{
answer[0] = 6;
answer[1] = 6;
}
else
{
answer[0] = 7 - n1;
answer[1] = 7 - n2;
}
}
return answer;
}