모의고사문제는 일정한 패턴을 체크 + 완전탐색을 이용해 문제를 풀었다.
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] st1 = {1, 2, 3, 4, 5}; // 1번학생
int[] st2 = {2, 1, 2, 3, 2, 4, 2, 5}; // 2번학생
int[] st3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}; // 3번학생
int[] cnt = new int[3];
//정답 체크
for(int i = 0 ; i<answers.length; i++){
if(answers[i] == st1[i%5])
cnt[0]++;
if(answers[i] == st2[i%8])
cnt[1]++;
if(answers[i] == st3[i%10])
cnt[2]++;
}
//find max
int max = -1;
for(int i = 0; i<cnt.length; i++){
if(cnt[i]>max)
max = cnt[i];
}
//answer
List<Integer> list = new ArrayList<>();
for(int i = 0; i<cnt.length; i++){
if(cnt[i] == max)
list.add(i+1);
}
int[] answer = new int[list.size()];
for(int i = 0; i<answer.length; i++){
answer[i] = list.get(i);
}
return answer;
}
}
정답을 맞춘 수max
값을 찾고 이 값이 같은 학생들로 새 배열을 return하는 것이 문제.
max
값이 같을 때 새 배열에 추가하기위해 List의 .add()
를 썼다.