모의고사(java)

최준근·2021년 12월 31일
0

java알고리즘

목록 보기
42/63

문제설명

생각하기

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배열로 바꾸어 주면 정답.

profile
느려도 좋으니 꾸준하게

0개의 댓글