1+ import java .util .List ;
12import java .util .ArrayList ;
23
34class Solution {
5+
6+ static class Student {
7+ int number ;
8+ int [] pattern ;
9+ int answerCount ;
10+
11+ public Student (int number , int [] pattern ) {
12+ this .number = number ;
13+ this .pattern = pattern ;
14+ }
15+
16+ public int getStudentNumber () {
17+ return number ;
18+ }
19+
20+ public int [] getPattern () {
21+ return pattern ;
22+ }
23+
24+ public int getPatternLength () {
25+ return pattern .length ;
26+ }
27+
28+ public int getAnswerCount () {
29+ return answerCount ;
30+ }
31+ }
32+
433 public int [] solution (int [] answers ) {
5- int [][] patterns = {
6- {1 , 2 , 3 , 4 , 5 },
7- {2 , 1 , 2 , 3 , 2 , 4 , 2 , 5 },
8- {3 , 3 , 1 , 1 , 2 , 2 , 4 , 4 , 5 , 5 }
9- };
10-
11- int [] score = new int [patterns .length ];
12-
13- for (int i = 0 ; i < answers .length ; i ++) {
14- for (int j = 0 ; j < patterns .length ; j ++) {
15- int user_answer = patterns [j ][i % patterns [j ].length ];
16- if (answers [i ] == user_answer ) {
17- score [j ]++;
18- }
34+ Student student1 = new Student (1 , new int []{1 , 2 , 3 , 4 , 5 });
35+ Student student2 = new Student (2 , new int []{2 , 1 , 2 , 3 , 2 , 4 , 2 , 5 });
36+ Student student3 = new Student (3 , new int []{3 , 3 , 1 , 1 , 2 , 2 , 4 , 4 , 5 , 5 });
37+
38+ for (int i = 0 ; i < answers .length ; i ++) {
39+ if (student1 .getPattern ()[i % student1 .getPatternLength ()] == answers [i ]) {
40+ student1 .answerCount ++;
41+ }
42+
43+ if (student2 .getPattern ()[i % student2 .getPatternLength ()] == answers [i ]) {
44+ student2 .answerCount ++;
45+ }
46+
47+ if (student3 .getPattern ()[i % student3 .getPatternLength ()] == answers [i ]) {
48+ student3 .answerCount ++;
1949 }
2050 }
2151
22- int maxScore = Math .max (score [0 ], Math .max (score [1 ], score [2 ]));
52+ Student [] students = {student1 , student2 , student3 };
53+ List <Integer > result = new ArrayList <>();
54+ int max = 0 ;
2355
24- ArrayList <Integer > correctList = new ArrayList <>();
25- for (int i = 0 ; i < score .length ; i ++) {
26- if (score [i ] == maxScore ) {
27- correctList .add (i + 1 );
56+ for (Student student : students ) {
57+ if (student .answerCount > max ) {
58+ max = student .answerCount ;
2859 }
2960 }
3061
31- return correctList .stream ().mapToInt (Integer ::intValue ).toArray ();
62+ for (Student student : students ) {
63+ if (max == student .answerCount ) {
64+ result .add (student .number );
65+ }
66+ }
67+
68+ int [] winners = new int [result .size ()];
69+ for (int i = 0 ; i < result .size (); i ++) {
70+ winners [i ] = result .get (i );
71+ }
72+
73+ return winners ;
3274 }
3375}
0 commit comments