명시된 char 값이 숫자인지 여부를 판단하여 true 또는 false 값으로 리턴
import java.util.ArrayList;
import java.util.List;
class Solution {
public static int[] solution(int[] answers) {
int[][] patterns = {
{1, 2, 3, 4, 5},
{2, 1, 2, 3, 2, 4, 2, 5},
{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
};
// 1. Count correct count per person
int[] hit = new int[3];
for(int personIdx = 0; personIdx < hit.length; personIdx++)
for(int probIdx = 0; probIdx < answers.length; probIdx++)
if(patterns[personIdx][probIdx % patterns[personIdx].length] == answers[probIdx])
hit[personIdx]++;
// 2. Find Max Count
int max = Math.max(hit[0], Math.max(hit[1], hit[2]));
// 3. Find Max Players
List<Integer> list = new ArrayList<>();
for(int i = 0; i < hit.length; i++)
if(max == hit[i])
list.add(i + 1);
// 4. Make answer array
int[] answer = new int[list.size()];
int cnt = 0;
for(int num : list)
answer[cnt++] = num;
return answer;
}
}
완전탐색 문제이다. 처음 겪어봐서 그런지 접근을 잘 못해서 다른 블로그를 보고 했다..
1번은 각 사람별 정답의 수를 확인하는 것이다.
personIdx 반복문을 돌면서 사람들 중 몇명이 맞았는지 체크.
probIdx 반복문을 생성, 조건문을 통해서
(patterns[personIdx]probIdx % patterns[personIdx].length] == answers[probIdx] -> 문제랑 정답이랑 비교.
맞으면hit++;
max 함수를 통해 가장 많이 맞춘 사람 저장
List로 가장 많이 맞춘 사람 저장
answer라는 배열에 list 값 저장 후 출력!