int[] count = new int[]{0,0,0}; // 각 사람의 정답 횟수 배열
int[] human1 = new int[]{1, 2, 3, 4, 5}; //5 human1.length
int[] human2 = new int[]{2, 1, 2, 3, 2, 4, 2, 5};//8 human2.length
int[] human3 = new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5};//10 human3.length
각 사람의 정답 횟수 배열을 생성
1번 수포자는 1~5를 순서대로 반복(human1)
2번 수포자는 2를 제외한 1~5를 순서대로 반복(human2)
3번 수포자는 3-1-2-4-5 순서로 2번씩 반복(human1)
반복되는 최소 단위를 배열로 만듦
int[][] human = {human1, human2, human3}; //이차원 배열 만들기
int j = 0;
for(int[] hNum : human){
for (int i= 0; i < answers.length; i++) { //
if(hNum[i % human[j].length] == answers[i]) {
count[j]++;
}
}
j++;
}
answer의 길이만큼 for문을 돌며 수포자들의 정답과 비교
반복마디의 길이만큼 나머지를 구해서 답을 비교
맞으면 count 증가
0번째 % 5-> 1(0번째 인덱스), 1번째 -> 2(1), 2번째 -> 3, 3번째 -> 4, 4번째-> 5,
5번째 % 5-> 1(0), 6번째 -> 2(1)
ArrayList <Integer> ls = new ArrayList<>();
// max값 찾기
int max = 0;
for (int i = 0; i < count.length; i++) {
if(max < count[i]){
max = count[i];
}
}
최대 점수를 가진 수포자 리스트를 생성하기 위해 ArrayList 사용
max 값을 int 타입으로 생성 후 0으로 초기화
카운트 된 길이만큼 반복 출력
만약 max가 count보다 작을 때 max에 저장
// max값 인덱스찾기
for (int i = 0; i < count.length; i++) {
if(max == count[i]){
ls.add(i+1);
}
}
카운트 된 길이만큼 반복 출력
max값이랑 같다면
최대 정답개수를 맞춘 수포자들을 ls에 추가
int[] answer = new int[ls.size()];
for (int i = 0; i < answer.length; i++) {
answer[i] = ls.get(i);
}
ls의 사이즈만큼 배열 생성
최대 점수 값을 가진 수포자들은 가변길이 배열 ls에 추가
고정길이 배열 answer에 저장
import java.util.ArrayList; import java.util.Arrays; class Solution { public int[] solution(int[] answers) { int[] count = new int[]{0,0,0}; // 각 사람의 정답 횟수 배열 int[] human1 = new int[]{1, 2, 3, 4, 5}; //5 human1.length int[] human2 = new int[]{2, 1, 2, 3, 2, 4, 2, 5};//8 human2.length int[] human3 = new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5};//10 human3.length // 0번째 % 5-> 1(0), 1번째 -> 2(1), 2번째 -> 3, 3번째 -> 4, 4번째-> 5, //5번째 % 5-> 1(0), 6번째 -> 2(1) // 정답 개수를 찾는 부분 int[][] human = {human1, human2, human3}; //이차원 배열 만들기 int j = 0; for(int[] hNum : human){ for (int i= 0; i < answers.length; i++) { // if(hNum[i % human[j].length] == answers[i]) { count[j]++; } } j++; } // max값의 인덱스 찾기 ArrayList <Integer> ls = new ArrayList<>(); // max값 찾기 int max = 0; for (int i = 0; i < count.length; i++) { if(max < count[i]){ max = count[i]; } } // max값 인덱스찾기 for (int i = 0; i < count.length; i++) { if(max == count[i]){ ls.add(i+1); } } // ArrayList에서 배열 변환 int[] answer = new int[ls.size()]; for (int i = 0; i < answer.length; i++) { answer[i] = ls.get(i); } return answer; } }