알고리즘 풀이/프로그래머스

프로그래머스 - 모의고사 (완전탐색)

배게 2019. 12. 9. 14:38
728x90



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
    static final int STUDENT_NUM = 3;  
    static int[] student1_guessPattern = {1,2,3,4,5};
    static int[] student2_guessPattern = {2,1,2,3,2,4,2,5};
    static int[] student3_guessPattern = {3,3,1,1,2,2,4,4,5,5};
    
    public int[] solution(int[] answers) {
        int[] score = getScore(answers);
        int topScore = getTopScore(score);
        
        ArrayList<Integer> fistRankList = getfirstRankList(score,topScore);
        
        int[] answer = converIntegers(fistRankList);
        return answer;
    }
    
    public int[] converIntegers(ArrayList<Integer> arrayList){
        int[] array = new int[arrayList.size()];
        for(int i=0; i<array.length; i++){
            array[i] = arrayList.get(i);
        }
        return array;
    }
    
    public ArrayList<Integer> getfirstRankList(int[] score, int topScore){
        ArrayList<Integer> firstRankList = new ArrayList<>();
        
        for(int i=0; i<score.length; i++){
            if(topScore==score[i]) firstRankList.add(i+1);
        }
        
        return firstRankList;
    }
    
    public int getTopScore(int[] score){
        int topScore = 0;
        for(int i=0; i<score.length; i++){
            topScore = Math.max(score[i],topScore);
        }
        return topScore;
    }
    
    public int[] getScore(int[] answers){
        int[] score = new int[STUDENT_NUM];
        for(int problemNum = 0; problemNum < answers.length; problemNum++ ){
            if( student1_guessPattern[ problemNum%student1_guessPattern.length ] == answers[problemNum] )
                score[0]++;
            if( student2_guessPattern[ problemNum%student2_guessPattern.length ] == answers[problemNum] )
                score[1]++;
            if( student3_guessPattern[ problemNum%student3_guessPattern.length ] == answers[problemNum] )
                score[2]++
        }
        return score;
    }
cs