import java.util.*;
class Solution {
private static final int[] A = {1,2,3,4,5};
private static final int[] B = {2,1,2,3,2,4,2,5};
private static final int[] C = {3,3,1,1,2,2,4,4,5,5};
public int[] solution(int[] answers) {
int idxA = 0;
int idxB = 0;
int idxC = 0;
int[] ansCnt = new int[3];
for(int answer : answers){
if(A[idxA] == answer){
ansCnt[0]++;
}
if(B[idxB] == answer){
ansCnt[1]++;
}
if(C[idxC] == answer){
ansCnt[2]++;
}
idxA = (idxA+1)%5;
idxB = (idxB+1)%8;
idxC = (idxC+1)%10;
}
int max = -1;
for(int c : ansCnt){
max = Math.max(max,c);
}
List<Integer> list = new ArrayList<>();
for(int i=0;i<3;i++){
if(ansCnt[i] == max){
list.add(i);
}
}
int[] a = new int[list.size()];
for(int i=0;i<a.length;i++){
a[i] = list.get(i)+1;
}
return a;
}
}
import java.util.*;
import java.util.stream.*;
class Solution {
private static final int[][] RULES = {
{1,2,3,4,5},
{2,1,2,3,2,4,2,5},
{3,3,1,1,2,2,4,4,5,5}
};
public int[] solution(int[] answers) {
int[] corrects = new int[3];
int max = 0;
for(int problem=0;problem<answers.length;problem++){
int answer = answers[problem];
for(int person = 0;person<3;person++){
if(getPicked(person, problem) == answer){
if(++corrects[person]>max){
max = corrects[person];
}
}
}
}
final int maxCorrects = max;
return IntStream.range(0,3)
.filter(i->corrects[i] == maxCorrects)
.map(i->i+1)
.toArray();
}
private int getPicked(int person, int problem){
int[] rule = RULES[person];
int index = problem%rule.length;
return rule[index];
}
}