모의고사

seheeee_97·2023년 12월 15일
0

회고팀

목록 보기
29/41




import java.util.*;

class Solution {
    public static int[] solution(int[] answers) {
        int[][] patterns = {
                {1, 2, 3, 4, 5},                //5개
                {2, 1, 2, 3, 2, 4, 2, 5},       //8개
                {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}  //10개
        };

        //정답 비교해서 hit에 누적
        int[] hit = new int[3];     //수포자는 3명이니까 3칸짜리 배열 선언
        for(int i = 0; i < hit.length; i++) {
            for(int j = 0; j < answers.length; j++) {
                if(patterns[i][j % patterns[i].length] == answers[j])
                    hit[i]++;
            }
        }
        
        List<Integer> list = new ArrayList<>();
        
        //제일 많이 맞춘 수포자 max에 저장
        int max = Math.max(hit[0], Math.max(hit[1], hit[2]));
        
        for(int i = 0; i < 3; i++){
            if(max == hit[i])           //max
                list.add(i + 1);        //index를 수포자 번호로 하기 때문에 +1 필요
        }

        int[] answer = new int[list.size()];    //max만큼 배열 선언
        int index = 0;
        for(int supo : list){
            answer[index] = supo;
            index++;
        }
            
        return answer;
    }
}




배열 길이가 고정이라 1명만 출력될 때 0이 같이 출력됨

import java.util.*;

class Solution {
    public static int[] solution(int[] answers) {
        int[][] patterns = {
                {1, 2, 3, 4, 5},                //5개
                {2, 1, 2, 3, 2, 4, 2, 5},       //8개
                {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}  //10개
        };

        //정답 비교해서 hit에 누적
        int[] hit = new int[3];     //수포자는 3명이니까 3칸짜리 배열 선언
        for(int i = 0; i < hit.length; i++) {
            for(int j = 0; j < answers.length; j++) {
                if(patterns[i][j % patterns[i].length] == answers[j])
                    hit[i]++;
            }
        }
        
        List<Integer> list = new ArrayList<>();
        
        
        //제일 많이 맞춘 수포자 max에 저장
        int max = Math.max(hit[0], Math.max(hit[1], hit[2]));
        
        int[] answer = new int[3];
        
        for(int i = 0; i < hit.length; i++){
            if(max == hit[i] && max != 0)
                answer[i] = i + 1;        //index를 수포자 번호로 하기 때문에 +1 필요
        }
        
        return answer;
    }
}

https://school.programmers.co.kr/learn/courses/30/lessons/42840

0개의 댓글