[CodeKata] 모의고사
링크
참고
- https://stackoverflow.com/questions/12503146/create-an-array-with-same-element-repeated-multiple-times
- https://forum.freecodecamp.org/t/repeat-the-same-item-multiple-times/198732/3
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/fill
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/flat
나의 풀이
function solution(answers) {
let result = [];
let bestStudent = [];
let student1 = [1, 2, 3, 4, 5];
let student2 = [2, 1, 2, 3, 2, 4, 2, 5];
let student3 = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
// 답의 갯수만큼, 새로운 배열을 만든 다음 답을 반복하고, 중첩 배열을 제거해서
// 하나의 배열로 만들고 student에 재할당
student1 = new Array(answers.length).fill([1, 2, 3, 4, 5]).flat();
student2 = new Array(answers.length).fill([2, 1, 2, 3, 2, 4, 2, 5]).flat();
student3 = new Array(answers.length).fill([3, 3, 1, 1, 2, 2, 4, 4, 5, 5]).flat();
// 학생의 답과 답의 index를 비교해서 같은 것을 리턴
const correctStudent1 = student1.filter((student, index) => {
return student === answers[index];
});
const correctStudent2 = student2.filter((student, index) => {
return student === answers[index];
});
const correctStudent3 = student3.filter((student, index) => {
return student === answers[index];
});
// 맞은 답의 갯 수를 새 변수에 할당
const lenStudent1 = correctStudent1.length;
const lenStudent2 = correctStudent2.length;
const lenStudent3 = correctStudent3.length;
// result라는 배열에 학생들의 맞은 답 갯 수를 push
result.push(lenStudent1, lenStudent2, lenStudent3);
// 학생들의 맞은 답 갯 수와 최대 맞은 갯수를 비교해서 최대 점수를 리턴
const bestScores = result.filter((num, index) => {
return num === Math.max(...result);
});
// for loop을 사용해서, result(각 학생이 맞은 갯 수)와 최대 점수가 같으면, index를 bestStudent라는 빈 배열에 push
for (let i = 0; i < result.length; i++) {
if (result[i] === bestScores[0]) {
bestStudent.push(i + 1);
}
}
// 오름차순으로 정렬
return bestStudent.sort((a, b) => a - b);
}
... 더 좋은 방법이 없을까...?
Author And Source
이 문제에 관하여([CodeKata] 모의고사), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@realryankim/CodeKata-모의고사저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)