여백에 도장 찍기

[프로그래머스/Level2/완전탐색/모의고사] 본문

Algorithm/완전탐색

[프로그래머스/Level2/완전탐색/모의고사]

Linzyseo 2021. 8. 16. 13:09

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

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr

 

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

class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};

        int a = answers.length; // 문항 갯수

        int[] supoja1_pattern = {1,2,3,4,5};   // 5
        int[] supoja2_pattern = {2,1,2,3,2,4,2,5};   // 8
        int[] supoja3_pattern = {3,3,1,1,2,2,4,4,5,5};   // 10

        int[] supoja1_dapji = new int[answers.length];
        int[] supoja2_dapji = new int[answers.length];
        int[] supoja3_dapji = new int[answers.length];

        int supoja1_jumsu = 0;
        int supoja2_jumsu = 0;
        int supoja3_jumsu = 0;

        // 각각의 배열에 답지를 생성한다.
        for(int i=0; i<answers.length; i++){
            supoja1_dapji[i] = supoja1_pattern[i%5];
            supoja2_dapji[i] = supoja2_pattern[i%8];
            supoja3_dapji[i] = supoja3_pattern[i%10];

            if(supoja1_dapji[i] == answers[i]){
                supoja1_jumsu += 1;
            }

            if(supoja2_dapji[i] == answers[i]){
                supoja2_jumsu += 1;
            }

            if(supoja3_dapji[i] == answers[i]){
                supoja3_jumsu += 1;
            }
        }


        HashMap<Integer, Integer> aa = new HashMap<>();

        aa.put(1, supoja1_jumsu);
        aa.put(2, supoja2_jumsu);
        aa.put(3, supoja3_jumsu);

        ArrayList<Integer> list = new ArrayList<>();

        int max = -1;
        for (int i=1; i<4; i++){
            if(aa.get(i) >= max){
                max = aa.get(i);
            }
        }

        for(int i=1; i<4; i++){
            if(aa.get(i) == max){
                list.add(i);
            }
        }


        answer = new int[list.size()];
        int size = 0;
        for(int l : list){
            answer[size++] = l;
        }

        Arrays.sort(answer);
        return answer;
    }
}
Comments