
import java.util.*;
class Solution {
public static int[] solution(int[] answers) {
int[][] patterns = {
{1, 2, 3, 4, 5}, //5개
{2, 1, 2, 3, 2, 4, 2, 5}, //8개
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5} //10개
};
//정답 비교해서 hit에 누적
int[] hit = new int[3]; //수포자는 3명이니까 3칸짜리 배열 선언
for(int i = 0; i < hit.length; i++) {
for(int j = 0; j < answers.length; j++) {
if(patterns[i][j % patterns[i].length] == answers[j])
hit[i]++;
}
}
List<Integer> list = new ArrayList<>();
//제일 많이 맞춘 수포자 max에 저장
int max = Math.max(hit[0], Math.max(hit[1], hit[2]));
for(int i = 0; i < 3; i++){
if(max == hit[i]) //max
list.add(i + 1); //index를 수포자 번호로 하기 때문에 +1 필요
}
int[] answer = new int[list.size()]; //max만큼 배열 선언
int index = 0;
for(int supo : list){
answer[index] = supo;
index++;
}
return answer;
}
}
배열 길이가 고정이라 1명만 출력될 때 0이 같이 출력됨
import java.util.*;
class Solution {
public static int[] solution(int[] answers) {
int[][] patterns = {
{1, 2, 3, 4, 5}, //5개
{2, 1, 2, 3, 2, 4, 2, 5}, //8개
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5} //10개
};
//정답 비교해서 hit에 누적
int[] hit = new int[3]; //수포자는 3명이니까 3칸짜리 배열 선언
for(int i = 0; i < hit.length; i++) {
for(int j = 0; j < answers.length; j++) {
if(patterns[i][j % patterns[i].length] == answers[j])
hit[i]++;
}
}
List<Integer> list = new ArrayList<>();
//제일 많이 맞춘 수포자 max에 저장
int max = Math.max(hit[0], Math.max(hit[1], hit[2]));
int[] answer = new int[3];
for(int i = 0; i < hit.length; i++){
if(max == hit[i] && max != 0)
answer[i] = i + 1; //index를 수포자 번호로 하기 때문에 +1 필요
}
return answer;
}
}
https://school.programmers.co.kr/learn/courses/30/lessons/42840