프로그래머스 [모의고사]
문제보기

소스코드
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
class Solution {
public static List<Integer> solution(int[] answers) {
int[][] answerCntArr = getAnswerCnt(answers);
List<Integer> resultList = new ArrayList<>();
int max = Math.max(answerCntArr[0][1], Math.max(answerCntArr[1][1], answerCntArr[2][1]));
for (int j = 0; j < answerCntArr.length; j++) {
int[] result = answerCntArr[j];
if (max == result[1]) {
resultList.add(result[0]);
}
}
return resultList;
}
private static int[][] getAnswerCnt(int[] answers) {
int[][] answerCntArr = {{1, 0}, {2, 0}, {3, 0}};
for (int i = 0; i < answers.length; i++) {
int answer = answers[i];
if (isCorrectNo1(i, answer)) answerCntArr[0][1] = answerCntArr[0][1] + 1;
if (isCorrectNo2(i, answer)) answerCntArr[1][1] = answerCntArr[1][1] + 1;
if (isCorrectNo3(i, answer)) answerCntArr[2][1] = answerCntArr[2][1] + 1;
}
return answerCntArr;
}
private static boolean isCorrectNo1(int questionNo, int answer) {
int guess = (questionNo + 1) % 5;
if (guess == 0) guess = 5;
return answer == guess;
}
private static boolean isCorrectNo2(int questionNo, int answer) {
int guess = -1;
if (questionNo % 2 == 0) {
guess = 2;
} else {
guess = (questionNo) % 8;
if (guess == 5) guess--;
else if (guess == 7) guess -= 2;
}
return answer == guess;
}
private static boolean isCorrectNo3(int questionNo, int answer) {
int guess = -1;
int index = questionNo % 10;
switch (index) {
case 0, 1:
guess = 3;
break;
case 2, 3:
guess = 1;
break;
case 4, 5:
guess = 2;
break;
case 6, 7:
guess = 4;
break;
case 8, 9:
guess = 5;
break;
}
return guess == answer;
}
}