Programmers | #2

8099 ワード

問題の説明


数学は数学を放棄する人の略語である.「囚人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つです.
点数が一番高い人が何人かいる場合は、戻った値を昇順に並べてください.

I/O例



私の答え

function solution(answers) {

test1 = [1,2,3,4,5]
test2 = [2,1,2,3,2,4,2,5]
test3 = [3,3,1,1,2,2,4,4,5,5]


result=[0,0,0]
for (i=0; i<answers.length; i++) {
  if(answers[i] === test1[i % 5]){
    result[0]++
  } if (answers[i] === test2[i % 8]){
    result[1]++
  } if(answers[i] === test3[i % 10]){
    result[2]++
  }
}

answer = []
first = Math.max(...result)
if (result[0] === first) {answer.push(1)}
  if (result[1] === first) {answer.push(2) }
    if (result[2] === first) {answer.push(3)}


return answer
}

他人の解答を見てコメントする


私と差が少ない人が多い.filter()で解いた人もいました.
もう一度filter()を復習しましょう.
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/filter