문제
https://programmers.co.kr/learn/courses/30/lessons/42840
내 코드
public List<Integer> solution(int[] answers) {
//1
int[] patn1 = {1, 2, 3, 4, 5};
int[] patn2 = {2, 1, 2, 3, 2, 4, 2, 5};
int[] patn3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
List<int []> patnList = new ArrayList<>();
patnList.add(patn1);
patnList.add(patn2);
patnList.add(patn3);
List<Integer> rlt = new ArrayList<>();
int max = 0;
//2
for(int i=0; i<patnList.size(); i++){
int count = 0;
int k=0;
for(int j=0; j<answers.length; j++){
if(patnList.get(i)[k] == answers[j])
count ++;
if(k == patnList.get(i).length -1){
k = 0;
} else{
k++;
}
}
//3
if(count > max){
max = count;
rlt = new ArrayList<>();
rlt.add(i+1);
}else if(count == max){
rlt.add(i+1);
}
}
return rlt;
}
풀이
- 세 학생의 찍는 패턴을 배열에 담고 그 배열들을 List에 담았다.
- 반복문을 돌면서 주어진 정답일 경우 count를 증가 시켰고 찍기 패턴의 요소(k)가 마지막에 도달했을때 다시 첫번째 요소로 초기화 시켜줬다.
- 가장많이 맞춘 학생을 배열에 담는다.