模擬試験


問題の説明


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

せいげんじょうけん

  • 試験には最大10000問が含まれています.
  • 題の正解は1,2,3,4,5の1つです.
  • 点数が一番高い人が何人かいる場合は、返される値を昇順に並べてください.
  • I/O例


    answerreturn[1,2,3,4,5][1][1,3,2,4,2][1,2,3]

    I/O例説明


    I/O例#1
    -見張り人1はすべての質問に答えた.
    -小胞子2はすべての問題を間違えた.
    -逮捕者3はすべての問題を間違えた.
    だから一番多くの質問に答えた人は水泡子です.
    I/O例#2
    -誰もが2つの問題に答えた.

    きほんコード

    class Solution {
        public int[] solution(int[] answers) {
            int[] answer = {};
            return answer;
        }
    }

    正しいコード

    class Solution {
        public int[] solution(int[] answers) {
            int[] answer;
            
            int[] a = new int[]{1,2,3,4,5};
            int[] b = new int[]{2,1,2,3,2,4,2,5};
            int[] c = new int[]{3,3,1,1,2,2,4,4,5,5};
            
            int[] score = new int[3];
    
            for(int i=0; i<answers.length; i++){
                if(answers[i] == a[i%a.length])  score[0]++; 
                if(answers[i] == b[i%b.length])  score[1]++;
                if(answers[i] == c[i%c.length]) score[2]++;
            }
            
            int max = 0;
            for(int i=0; i<3; i++){
                if(score[i] > max){ 
                    max = score[i]; 
                }
            }
            
            int cnt = 0;
            for(int i=0; i<3; i++){
                if(score[i] == max){ 
                    cnt++; 
                } 
            }
    
            answer = new int[cnt];
            
            int idx = 0;
            for(int i=0; i<3; i++){
               if(score[i] == max) {
                   answer[idx++] = i+1;
               }
            }
            return answer;
        }
    }

    問題を解く


    a,b,cを並べた後、scoreに並べて、小胞子の答えを保存します.a[i%a.length]が答え[i]に等しい場合、score[0]++が与えられる.次にfor文を回して(max)得点が最も高いことを示し,(cnt)得点が最も高い人数を求める.点数が一番高い人を答えに入れてfor文を回し、score[i]=maxで[idx+]=i+1と答え、点数が高い人が多い場合は昇順順で並べ替える方法で記入します.