JS>[Programmers]模擬試験


問題の説明


数学は数学を放棄する人の略語である.
「囚人3人組」は模擬試験で数学の問題を全部撮りたいと思っている.最初の問題から最後の問題まで、執胞子は以下の通りである.
1番捕手の撮り方:1,2,3,4,5,1,2,3,4,5...
2番捕手の撮り方:2、1、2、3、2、4、2、5、2、2、3、2、4、2、5...
3番捕手の撮り方:3,3,1,1,2,2,4,5,5,3,3,1,2,2,4,5,5...
最初の問題から最後の問題までの正解が順番に並んでいる場合は、最も多くの質問に答えた人が誰なのか、答えを並べて返すように解答関数を書いてください.

せいげんじょうけん


試験には最大10000問が含まれている.
質問の答えは1 2 3 4 5のうちの1つです.
点数が一番高い人が何人かいる場合は、戻った値を昇順に並べてください.

問題を解く

function solution(answers) {
  let firstMan = [1, 2, 3, 4, 5];
  let secondMan = [2, 1, 2, 3, 2, 4, 2, 5];
  let thirdMan = [3, 3, 1, 1, 2, 2, 4, 4, 5, 5];
  let count = [0, 0, 0];

  for (let i = 0; i < answers.length; i++) {
    if (firstMan[i % firstMan.length] === answers[i]) count[0]++;
    if (secondMan[i % secondMan.length] === answers[i]) count[1]++;
    if (thirdMan[i % thirdMan.length] === answers[i]) count[2]++;
  }

  let max = Math.max(...count);
  let result = [];

  for (let i = 0; j < count.length; i++) {
    if (count[j] === max) {
      result.push(j + 1);
    }
  }
  return result;
}

問題の説明


被験者の答えを1つの列に並べ,正しい答え数を計算するためにcountを並べた.
質問用紙を各順序の被験者の答えと比較した後,count配列に対応するインデックスの値を増やした.
次に、カウントの最大値をmacに保存し、結果値を含む結果を宣言します.
正解を昇順に並べて、インデックスが0から始まるので+1を与えます.