模擬試験


問題の説明


数学は数学を放棄する人の略語である.「囚人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例


    answersreturn[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つの問題に答えた
  • に答える


  • 3人の生徒の撮影方法をそれぞれアレイに格納する.

  • 正解の個数によって正解や撮り方が正しいかどうかを判断し、正しければ生徒1人あたりの点数が増える.

  • 点数の最大値を求めた後、どれだけの学生の点数が最大値と等しいかを確認し、countを増やした.

  • countで答えを入れる配列を初期化しました.

  • そして最大値と学生の正解個数を比較し,学生の番号を昇順に並べた.
  • 正解の個数が増えても、最大値の個数と解答を書く演算は最大3回しかないので、処理速度に大きな差はありません.

    コード#コード#

    class Solution {
        public int[] solution(int[] answers) {
            int[] answer;
            int[] a = {1, 2, 3, 4, 5};
            int[] b = {2, 1, 2, 3, 2, 4, 2, 5};
            int[] c = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
            int scoreA = 0, scoreB = 0, scoreC = 0;
    
            //점수 계산
            for (int i = 0; i < answers.length; i++) {
                if (a[i % a.length] == answers[i]) scoreA++;
                if (b[i % b.length] == answers[i]) scoreB++;
                if (c[i % c.length] == answers[i]) scoreC++;
            }
    		
            //배열 개수 세기
            int count = 0, index = 0;
            int max = Math.max(scoreA, scoreB);
            if (max < cc) max = cc;
            if (max == scoreA) {
                count++;
            }
            if (max == scoreB) {
                count++;
            }
            if (max == scoreC) {
                count++;
            }
    		
            //배열 생성
            answer = new int[count];
            if (max == scoreA) {
                answer[index++] = 1;
            }
            if (max == scoreB) {
                answer[index++] = 2;
            }
            if (max == scoreC) {
                answer[index++] = 3;
            }
    
            return answer;
        }
    }