import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] answer = {0, 0, 0};
int[] std1 = {1, 2, 3, 4, 5};
int[] std2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] std3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
for(int i=0; i<answers.length; i++){
if(std1[i%5] == answers[i]) answer[0]++;
if(std2[i%8] == answers[i]) answer[1]++;
if(std3[i%10] == answers[i]) answer[2]++;
}
if(answer[0] == answer[1] && answer[1] == answer[2]){
int[] who = {1, 2, 3};
return who;
} else if(answer[0] == answer[1] && answer[1] > answer[2]) {
int[] who = {1, 2};
return who;
} else if(answer[1] == answer[2] && answer[2] > answer[0]) {
int[] who = {2, 3};
return who;
} else if(answer[2] == answer[0] && answer[0] > answer[1]) {
int[] who = {1, 3};
return who;
} else if(answer[0] > answer[1] && answer[0] > answer[2]) {
int[] who = {1};
return who;
} else if(answer[1] > answer[0] && answer[1] > answer[2]) {
int[] who = {2};
return who;
} else {
int[] who = {3};
return who;
}
}
}
결과 리턴할 때 보기 안좋아서 리스트로 다시 구현해보려 함
import java.util.*;
class Solution {
public int[] solution(int[] answers) {
int[] score = new int[3];
int[] std1 = {1, 2, 3, 4, 5};
int[] std2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] std3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
for(int i=0; i<answers.length; i++){
if(std1[i%5] == answers[i]) score[0]++;
if(std2[i%8] == answers[i]) score[1]++;
if(std3[i%10] == answers[i]) score[2]++;
}
int max = Math.max(score[0], Math.max(score[1], score[2]));
List<Integer> list = new ArrayList<>();
for(int i=0; i<3; i++){
if(max == score[i]) list.add(i+1);
}
int[] answer = new int[list.size()];
int cnt=0;;
for(int num : list){
answer[cnt++] = num;
}
return answer;
}
}
저번에 ArrayList를 쓸 때 크기가 가변적이라는 특성이 생각나서 ArrayList를 이용하였다.