문제

programmers42840

수포자 1, 2, 3의 찍는 방식 패턴을 구하고 있었다.. 그게 아니고 진짜 하나씩 비교하고 계산해주면 되는 문제

구현

#include <iostream>
#include <algorithm> // max
#include <vector>
using namespace std;

vector<int> solution(vector<int> answers) {
	vector<int> answer;
	vector<int> v1 = { 1, 2, 3, 4, 5 };
	vector<int> v2 = { 2, 1, 2, 3, 2, 4, 2, 5 };
	vector<int> v3 = { 3, 3, 1, 1, 2, 2, 4, 4, 5, 5 };
	int size = answers.size();
	int a1, a2, a3, i;
	a1 = a2 = a3 = 0;

	for (i = 0; i < size; i++) {
		if (v1[i % 5] == answers[i]) a1++;
		if (v2[i % 8] == answers[i]) a2++;
		if (v3[i % 10] == answers[i]) a3++;
	}

	int m = max(a1, max(a2, a3));
	if (a1 == m) answer.push_back(1);
	if (a2 == m) answer.push_back(2);
	if (a3 == m) answer.push_back(3);

	return answer;
}