https://school.programmers.co.kr/learn/courses/30/lessons/77484
lottos에서 0의 갯수와 win_nums와 비교해서 일치하는 숫자의 갯수를 구한 뒤
구한 갯수들로 결과를 만든다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
int num = 0;
int zero = 0;
for(const auto& l : lottos)
{
if(l == 0)
{
zero++;
continue;
}
if(find(win_nums.begin(), win_nums.end(),l) != win_nums.end())
num++;
}
answer.push_back(7 - (zero + num) < 0 ? 1 : 7 - (zero + num) > 6 ? 6 : 7 - (zero + num));
answer.push_back(7 - num >= 6 ? 6 : 7 - num);
return answer;
}
#include <string>
#include <vector>
using namespace std;
int func(int n){
if(n == 6) return 1;
else if(n == 5) return 2;
else if(n == 4) return 3;
else if(n == 3) return 4;
else if(n == 2) return 5;
else return 6;
}
vector<int> solution(vector<int> lottos, vector<int> win_nums) {
vector<int> answer;
// 0의 갯수를 담는 변수
int zero = 0;
for(int i = 0; i < lottos.size(); i++){
if(lottos[i] == 0) zero++;
}
// lottos와 win_nums에서 일치하는 번호 갯수를 담는 변수
int check = 0;
int visited[6] = {0,};
for(int i = 0; i < lottos.size(); i++){
for(int j = 0; j < win_nums.size(); j++){
if(visited[i] == 0 && lottos[i] == win_nums[j]){
visited[i] = 1;
check++;
}
}
}
answer.push_back(func(zero+check));
answer.push_back(func(check));
return answer;
}
zero는 따로 담고 visited배열을 만들어서 한번 탐색한 win_nums의 숫자는 다시 체크하지 않도록 하였다. 0의 갯수와 일치한 숫자의 갯수로 계산할때 외부 함수로 구현하여 계산해주었다.