본문

모의고사 #완전탐색 #level1

반응형

 

💡 풀이

package com.java.programmers;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;

public class 모의고사 {
	public static void main(String[] args) {
		//int[] inputs = { 1, 2, 3, 4, 5 };
		int[] inputs = { 1, 3, 2, 4, 2 };
		System.out.println(Arrays.toString(solution(inputs)));
	}

    public static int[] solution(int[] answers) {
    	//문제에 나온 정답의 반복되는 패턴을 배열로 만들어줍니다. 
        int[] arr1 = {1, 2, 3, 4, 5};
        int[] arr2 = {2, 1, 2, 3, 2, 4, 2, 5};
        int[] arr3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
 
        //HashMap을 활용하여 Key로 학생의 번호, Value로 정답 갯수를 설정해줍니다.
        HashMap<Integer, Integer> hm = new HashMap<>();
        hm.put(1, 0);
        hm.put(2, 0);
        hm.put(3, 0);
        
        //정답 갯수 Count
        //for문으로 주어진 정답 배열을 돌면서 %(각 학생의 정답 배열의 길이)를 통해 맞은 갯수를 Count
        for (int i = 0; i < answers.length; i++) {
            int num = answers[i];
            if (arr1[i%5] == num) hm.replace(1, hm.get(1)+1);
            if (arr2[i%8] == num) hm.replace(2, hm.get(2)+1);
            if (arr3[i%10] == num) hm.replace(3, hm.get(3)+1);
        }
        
        //HashMap의 Value 중 최대값을 구해줍니다.
        int max = Math.max(hm.get(1), Math.max(hm.get(2), hm.get(3)));

        
        //정답 리스트 형성: 최대값이랑 일치하는 Key를 answerList에 저장해줍니다.
        ArrayList<Integer> answerList = new ArrayList<>();
        for (Integer key : hm.keySet()) {
            if (hm.get(key) == max) {
                answerList.add(key);
            }
        }
        
        //정렬 및 배열로 변환
        //Collections.sort를 활용해 오름차순으로 정렬하고 answer 배열로 변환 후 return해줍니다
        int[] answer = new int[answerList.size()];
        Collections.sort(answerList);
        for (int i = 0; i < answer.length; i++) {
            answer[i] = answerList.get(i);
        }
        
        return answer;
    }
}

 

 

 

반응형

공유

댓글