알고리즘/프로그래머스

[프로그래머스] 모의고사 for JAVA _ 완전탐색 알고리즘

정석이 2022. 2. 11. 16:04

 

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

 

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

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

programmers.co.kr

 

 

 

 

문제

 

 

 


 

 

완전탐색 유형에 있는 level1짜리 문제이다.

 

 

 

학생 1,2,3의 문제 번호는 계속 반복되므로 이걸 answer의 길이만큼 반복해서 비교해야 한다.

 

 

 

 

 

코드

import java.util.ArrayList;

class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        int[] student1 = {1, 2, 3, 4, 5};
        int[] student2 = {2, 1, 2, 3, 2, 4, 2, 5};
        int[] student3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
        int st1 = 0, st2 = 0, st3 = 0;
        
        for(int i = 0; i < answers.length; i++){
            if(student1[i % student1.length] == answers[i]) st1++;
            if(student2[i % student2.length] == answers[i]) st2++;
            if(student3[i % student3.length] == answers[i]) st3++;
        }
        
        int max = Math.max(Math.max(st1, st2), st3);
        ArrayList<Integer> arrayList = new ArrayList<>();
        if(max == st1) arrayList.add(1);
        if(max == st2) arrayList.add(2);
        if(max == st3) arrayList.add(3);
        
        answer = new int[arrayList.size()];
        
        int size = 0;
        for(int temp : arrayList)
            answer[size++] = temp;
        
        return answer;
    }
}

 

 

학생이 3명이니까...일일히 비교해서 하면 된다.

 

 

배열에 max값 비교해서 넣고 sort 하는것보다 그냥 ArrayList 하나 만드는게 나을 것 같음

 

 

 

그러고 answer[] 배열에 넣어줬다.

 

 

다른 사람 풀이도 봤는데 이게 제일 무난하고 일반적인 코드인 것 같다.