プログラマーコードテスト「模擬試験」
function solution(answers) {
let answer = [];
let students = [[1, 2, 3, 4, 5], [2, 1, 2, 3, 2, 4, 2, 5], [3, 3, 1, 1, 2, 2, 4, 4, 5, 5]];
let tmpArr = [];
for (let i=0; i<students.length; i++) {
let cnt=0;
let n=0;
for (let j=0; j<answers.length; j++) {
if (students[i].length === n) n=0;
if (answers[j] === students[i][n]) cnt++;
n++;
}
if (tmpArr.length === 0) tmpArr.push([i+1, cnt]);
else if (tmpArr[tmpArr.length-1][1] < cnt) {
tmpArr=[];
tmpArr.push([i+1, cnt]);
} else if (tmpArr[tmpArr.length-1][1] === cnt) tmpArr.push([i+1, cnt]);
}
if (tmpArr.length === 1) answer.push(tmpArr[0][0]);
else {
for (let i=0; i<tmpArr.length; i++) {
answer.push(tmpArr[i][0]);
}
}
answer.sort((a, b) => {return a - b} );
return answer;
}
解法
他人を解く
*Math.max.applyは2番目のパラメータビットで配列を受け入れます.△最初の席は何でもいいです.
このような形で各値を「学生1 c」変数に含め、Math.maxを使用して得られた結果値をmax変数に含めます.
...こんなに簡単に解けますよ!
Reference
この問題について(プログラマーコードテスト「模擬試験」), 我々は、より多くの情報をここで見つけました https://velog.io/@saiani1/프로그래머스-코딩테스트-모의고사テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol