본문
모의고사 #완전탐색 #level1
프로그래밍/코딩테스트(java) 2021. 1. 6. 08:14
반응형
💡 풀이
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;
}
}
반응형
댓글