Search

모의고사

difficulty
level1
source
programmers
url

내 풀이 1

function solution(answers) { const students = { 1: [1, 2, 3, 4, 5], 2: [2, 1, 2, 3, 2, 4, 2, 5], 3: [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] }; const result = [0, 0, 0]; answers.forEach((answer, i) => { Object.values(students).forEach((scores, j) => { const studentAnswer = scores[i] || scores[i % scores.length]; if (answer === studentAnswer) { result[j]++; } }); }); let highestScore = 0; let winners = []; result.forEach((r, i) => { const studentNum = i + 1; if (r > highestScore) { winners = [studentNum]; highestScore = r; } else if (r === highestScore) { winners.push(studentNum); } }); return winners; }
JavaScript

내 풀이 2

학생의 답에 접근할 때 불필요한 scores[i] || scores[i % scores.length] 부분 개선
점수 구하는 로직 분리해서 재사용성 향상
점수 구할 때 result 변수 두지 않고 filter 메서드 + length 로 점수 계산
function solution(answers) { const students = { 1: [1, 2, 3, 4, 5], 2: [2, 1, 2, 3, 2, 4, 2, 5], 3: [3, 3, 1, 1, 2, 2, 4, 4, 5, 5] }; const scores = Object.values(students).map(studentAnswers => { return getScore(answers, studentAnswers); }); const maxScore = Math.max(...scores); const answer = []; scores.forEach((score, index) => { if (score === maxScore) { answer.push(index + 1); } }); return answer; } function getScore(answers, studentAnswers) { return answers.filter((a, i) => a === studentAnswers[i % studentAnswers.length]).length; }
JavaScript