https://school.programmers.co.kr/learn/courses/30/lessons/42840
1,2,3번 사람들의 정답쓰는걸 배열로 미리 저장해둔다.
answers를 for문을 돌리면서 각각 배열과 비교해서 정답을 맞춘 개수를 구한다.
cmp함수를 만들어서 정답 맞춘 개수에 따라 정렬 한 뒤 s[0]을 미리 넣어두고 s[1]과 s[2]가 s[0]과 같은지 비교해서 같으면 넣어준다.
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
bool cmp(pair<int,int> a, pair<int,int> b)
{
if(a.second > b.second)
return a.first > b.first;
return a.first < b.first;
}
vector<int> solution(vector<int> answers) {
vector<int> answer;
int arr1[5] = {1,2,3,4,5};
int arr2[8] = {2,1,2,3,2,4,2,5};
int arr3[10] = {3,3,1,1,2,2,4,4,5,5};
vector<pair<int,int>> s {make_pair(1,0),make_pair(2,0),make_pair(3,0)};
for(int i = 0; i < answers.size(); i++)
{
if(answers[i] == arr1[i%5])
s[0].second++;
if(answers[i] == arr2[i%8])
s[1].second++;
if(answers[i] == arr3[i%10])
s[2].second++;
}
sort(s.begin(),s.end(),cmp);
answer.push_back(s[0].first);
for(int i = 1; i < 3; i++)
{
if(s[0].second == s[i].second)
answer.push_back(s[i].first);
}
return answer;
}
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> one = {1,2,3,4,5};
vector<int> two = {2,1,2,3,2,4,2,5};
vector<int> thr = {3,3,1,1,2,2,4,4,5,5};
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> they(3);
for(int i=0; i<answers.size(); i++) {
if(answers[i] == one[i%one.size()]) they[0]++;
if(answers[i] == two[i%two.size()]) they[1]++;
if(answers[i] == thr[i%thr.size()]) they[2]++;
}
int they_max = *max_element(they.begin(),they.end());
for(int i = 0; i< 3; i++) {
if(they[i] == they_max) answer.push_back(i+1);
}
return answer;
}
방식은 비슷하나 굳이 pair로 하지않고 정답맞춘 수만 넣어준뒤
max_element를 찾아서 그 값과 비교해가면서 같을경우만 넣어준다.