https://programmers.co.kr/learn/courses/30/lessons/42840
[ 이전에 푼 코드 (왜 이렇게 풀었지.. 리스트 개념을 몰랐을 때) ]
import java.util.ArrayList;
class Solution {
public Integer[] solution(int[] answers) {
int[][] person = {{1, 2, 3, 4, 5},
{2, 1, 2, 3, 2, 4, 2, 5},
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }};
int[] score = new int[3];
for(int i=0; i<answers.length; i++) {
if(person[0][i%5] == answers[i]) {
score[0]++;
}
if(person[1][i%8] == answers[i]) {
score[1]++;
}
if(person[2][i%10] == answers[i]) {
score[2]++;
}
}
int[] smarter = new int[3];
smarter[0] = 1;
int smart = 0;
int max = score[0];
int count = 1;
for(int i=1; i<3; i++) {
if(score[i] > max) {
max = score[i];
smarter[smart] = 0;
smarter[i] = 1;
smart = i;
count = 1;
}
else if(score[i] == max) {
smarter[i] = 1;
count++;
}
}
Integer[] answer = new Integer[count];
ArrayList<Integer> list = new ArrayList<Integer>();
int index = 1;
for(int i : smarter) {
if(i == 1) {
list.add(index);
}
index++;
}
answer = list.toArray(new Integer[list.size()]);
return answer;
}
}
[ 리스트 개념을 알고 난 후 풀이 ]
import java.util.ArrayList;
class Solution {
public int[] solution(int[] answers) {
int[][] person = {{1, 2, 3, 4, 5},
{2, 1, 2, 3, 2, 4, 2, 5},
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }};
int[] score = new int[3];
for(int i=0; i<answers.length; i++) {
if(person[0][i%person[0].length] == answers[i]) {
score[0]++;
}
if(person[1][i%person[1].length] == answers[i]) {
score[1]++;
}
if(person[2][i%person[2].length] == answers[i]) {
score[2]++;
}
}
ArrayList<Integer> list = new ArrayList<Integer>();
int MaxScore = Math.max(score[0], Math.max(score[1], score[2]));
for(int i=0; i<score.length; i++) {
if(score[i] == MaxScore) {
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;
}
}