수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다.
1번 수포자가 찍는 방식: 1, 2, 3, 4, 5, 1, 2, 3, 4, 5, ...
2번 수포자가 찍는 방식: 2, 1, 2, 3, 2, 4, 2, 5, 2, 1, 2, 3, 2, 4, 2, 5, ...
3번 수포자가 찍는 방식: 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, 3, 3, 1, 1, 2, 2, 4, 4, 5, 5, ...
1번 문제부터 마지막 문제까지의 정답이 순서대로 들은 배열 answers가 주어졌을 때, 가장 많은 문제를 맞힌 사람이 누구인지 배열에 담아 return 하도록 solution 함수를 작성해주세요
answers return
[1,2,3,4,5][1]
[1,3,2,4,2][1,2,3]
- 반복이 시작되는 부분전까지 array를 만들어준다
- answers의 길이만큼 반복문을 돌려서 일치하면 값을 증가시켜준다
- 최댓값을 찾아서 정답 array에 넣어준다
function solution(answers) {
const answer = [];
//학생들 반복되기 전 구간까지 적어주기!!
const student1 = [1, 2, 3, 4, 5];
const student2 = [2, 1, 2, 3, 2, 4, 2, 5];
const student3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
let count = [0, 0, 0];
for (let i = 0; i < answers.length; i++) {
if (answers[i] === student1[i % student1.length]) count[0]++;
if (answers[i] === student2[i % student2.length]) count[1]++;
if (answers[i] === student3[i % student3.length]) count[2]++;
}
const max = Math.max(count[0], count[1], count[2]);
for (let i = 0; i < count.length; i++) {
if (count[i] === max) answer.push(i + 1);
}
return answer;
}
- answer기준 i번째 index와 student의 i번째 index를 비교해야 하는데
answer보다 student의 길이가 작아서 i번째가 없을 수 있다.
i가 반복되는 것의 길이보다 커지면 다시 처음 인덱스부터 비교해야한다.
- i % student.length 를 이용하면 된다(나머지 이용해주기!)
- 예시 student=[2,3,3,1,5]일 때 항상 0,1,2,3,4 index 로 돌도록
- count=[0,0,0] 0번째는 1번학생이 맞춘 정답갯수 1번쨰는 2번학생이 맞춘 정답갯수
- Math.max로 count array중에 최댓값을 구한뒤
- count돌면서 max와 같은 것이 있으면 index+1을 정답 array에 넣는다
- index순이기 때문에 점수 같더라도 오름차순으로 정렬된다