模擬試験(java)


問題の説明



考える


1.水泡を繰り返す人の撮影方法.
2.繰り返し文で数字胞子の正解を保存する
3.保存した正解の個数を比較し、複数対の数字を出力する

説明する

import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int[][] giveUp = {{1,2,3,4,5},{2,1,2,3,2,4,2,5},{3,3,1,1,2,2,4,4,5,5}};
        int cnt =0;
        int ans[] = new int[3]; 
        
        for(int i = 0; i<3; i++){
            for(int j=0; j< answers.length; j++){
                if(cnt == giveUp[i].length){
                    cnt = 0;
                }
                if(answers[j] == giveUp[i][cnt]){
                    ans[i]++;
                }
                cnt++;    
            }
            cnt =0;
           
        }
        
        ArrayList<Integer> list = new ArrayList<>();   
        int max = Math.max(ans[0],Math.max(ans[1],ans[2]));
        for(int i =0; i<3; i++){
            if(ans[i] == max) list.add(i+1);
        }
            
        int[] last = new int[list.size()];
        for(int i=0; i<last.length; i++){
            last[i] = list.get(i);
        }
        return last;
        
    }
}
cntの各小胞子には異なるモードがあるため、各モードの数字はcntに含まれる.
maxでは1番胞子(2番,3番)を比較し,多くの小胞子を含む.
ans[i]の値と同じ場合は、リストに数値胞子を追加し、リストをint配列に変更すると、正しい答えが得られます.