[프로그래머스] 42840번 : 모의고사

이도은·2022년 1월 25일
0


코드

import java.util.ArrayList;
import java.util.Arrays;

public class PRO_42840 {
    public static int[] solution(int[] answers) {
        int[] first = {1, 2, 3, 4, 5};
        int[] second = {2, 1, 2, 3, 2, 4, 2, 5};
        int[] third = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

        int[] score = {0, 0, 0};
        for (int i = 0; i < answers.length; i++) {
            if (first[i % 5] == answers[i]) ++score[0];
            if (second[i % 8] == answers[i]) ++score[1];
            if (third[i % 10] == answers[i]) ++score[2];
        }

        int[] arr = new int[score.length];
        for (int i = 0; i < score.length; i++) {
            arr[i] = score[i];
        }

        Arrays.sort(arr);

        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < arr.length; i++) {
            if (score[i] == arr[2])
                list.add(i + 1);
        }

        int[] answer = new int[list.size()];
        for (int i = 0; i < list.size(); i++) {
            answer[i] = list.get(i);
        }
        return answer;
    }

    public static void main(String[] args) {
        int[] answers = {1, 2, 3, 4, 5};

        System.out.println(Arrays.toString(solution(answers)));
    }
}

풀이 및 느낀점

수포자 1, 2, 3의 정답을 저장한다. 저장한 수포자들의 정답 배열과 실제 정답 배열을 비교하여, 새로 만든 score 배열에 저장한다. 이때 수포자 1이 맞춘 정답수는 score[1]에 저장되고, 수포자 2가 맞춘 정답수는 score[2]에 저장된다. 수포자 3은 score[3]이다. score 배열을 복사한 arr 배열을 생성해주는데, 그 이유는 복사한 arr 배열을 오름차순으로 정렬하여 score배열과 비교한 후 어느 수포자가 정답을 많이 맞췄는지 확인하기 위함이다. arrayList를 생성한 이유는 점수가 저장된 score 배열과 오름차순으로 정렬된 arr 배열의 마지막 인덱스(가장 높은 점수)를 비교하여 수포자의 번호(score의 인덱스 + 1)을 저장해주기 위함이다. score[i]+1은 수포자의 번호를 뜻한다.

참고자료

0개의 댓글