import java.util.ArrayList;
import java.util.Arrays;
public class PRO_42840 {
public static int[] solution(int[] answers) {
int[] first = {1, 2, 3, 4, 5};
int[] second = {2, 1, 2, 3, 2, 4, 2, 5};
int[] third = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
int[] score = {0, 0, 0};
for (int i = 0; i < answers.length; i++) {
if (first[i % 5] == answers[i]) ++score[0];
if (second[i % 8] == answers[i]) ++score[1];
if (third[i % 10] == answers[i]) ++score[2];
}
int[] arr = new int[score.length];
for (int i = 0; i < score.length; i++) {
arr[i] = score[i];
}
Arrays.sort(arr);
ArrayList<Integer> list = new ArrayList<>();
for (int i = 0; i < arr.length; i++) {
if (score[i] == arr[2])
list.add(i + 1);
}
int[] answer = new int[list.size()];
for (int i = 0; i < list.size(); i++) {
answer[i] = list.get(i);
}
return answer;
}
public static void main(String[] args) {
int[] answers = {1, 2, 3, 4, 5};
System.out.println(Arrays.toString(solution(answers)));
}
}
수포자 1, 2, 3의 정답을 저장한다. 저장한 수포자들의 정답 배열과 실제 정답 배열을 비교하여, 새로 만든 score 배열에 저장한다. 이때 수포자 1이 맞춘 정답수는 score[1]에 저장되고, 수포자 2가 맞춘 정답수는 score[2]에 저장된다. 수포자 3은 score[3]이다. score 배열을 복사한 arr 배열을 생성해주는데, 그 이유는 복사한 arr 배열을 오름차순으로 정렬하여 score배열과 비교한 후 어느 수포자가 정답을 많이 맞췄는지 확인하기 위함이다. arrayList를 생성한 이유는 점수가 저장된 score 배열과 오름차순으로 정렬된 arr 배열의 마지막 인덱스(가장 높은 점수)를 비교하여 수포자의 번호(score의 인덱스 + 1)을 저장해주기 위함이다. score[i]+1은 수포자의 번호를 뜻한다.