본문 바로가기
알고리즘

[프로그래머스] 모의고사 [Java/자바]

by irerin07 2019. 9. 25.
728x90

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

코드:https://github.com/irerin07/AlgorithmStudyBaek/blob/master/src/programmers_lvl_1/programmers42840.java

 

import java.util.Arrays;

public class programmers42840 {
    public static void main(String[] args) {
        int[] answers = {1,3,2,4,2};
        int[] answer = solution(answers);
        for(int i = 0; i < answer.length; i++){
            System.out.println(answer[i]);
        }

    }
    public static int[] solution(int[] answers){
        int[] answer = {};
        int[][] patt = {{1, 2, 3, 4, 5},{2, 1, 2, 3, 2, 4, 2, 5},{3, 3, 1, 1, 2, 2, 4, 4, 5, 5}};
        int[] counter = new int[3];
        for(int i = 0; i < answers.length; i++){
            if(answers[i] == patt[0][i%5]){
                counter[0]+= 1;
            }
            if(answers[i] == patt[1][i%8]){
                counter[1]+=1;
            }
            if(answers[i]== patt[2][i%10]){
                counter[2]+=1;
            }
        }
        int max = counter[0];

        if(max < counter[1]) max = counter[1];
        if(max < counter[2]) max = counter[2];

        if(max == counter[0] && max == counter[1] && max == counter[2]) return new int[]{1,2,3};
        else if(max == counter[0] && max == counter[1]) return new int[]{1,2};
        else if(max == counter[0] && max == counter[2]) return new int[]{1,3};
        else if(max == counter[1] && max == counter[2]) return new int[]{2,3};
        else if(max == counter[0]) return new int[]{1};
        else if(max == counter[1]) return new int[]{2};

        return new int[]{3};

    }
}

 

완전탐색 알고리즘 문제

 

각 학생의 찍기 패턴을 배열로 만들고

주어진 answers 배열과 매치하여 counter를 올려준다.

i%5같은 경우는 만약 answers 배열의 크기가 5보다 큰 상황에서 패턴과 매치시키기 위해 사용했다.

예를 들어 5번째 answer배열의 element같은 경우는 5%5 = 0 이므로 patt[0][0]번째에 위치한 '1'과 매칭을 하게 된다. (Array는 0부터 시작하니까)

728x90