본문 바로가기
알고리즘/완전탐색

[프로그래머스 연습문제 level_1 ] 모의고사

by happyhelen 2024. 1. 18.

 

import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        int[] a = {1,2,3,4,5}; // 5개 반복
        int[] b = {2,1,2,3,2,4,2,5}; // 8개 반복
        int[] c = {3,3,1,1,2,2,4,4,5,5}; // 10개 반복
        int[] cnt = new int[3];
        
        
        for(int i=0; i<answers.length; i++){
            if(a[i%5] == answers[i]) cnt[0]++;
            if(b[i%8] == answers[i]) cnt[1]++;
            if(c[i%10] == answers[i]) cnt[2]++;
        }
        
        int max = Math.max(Math.max(cnt[0], cnt[1]), cnt[2]);
        ArrayList<Integer> list = new ArrayList<>();
        
        for(int i=0; i<cnt.length; i++){
            if(max == cnt[i]) {
                list.add(i+1);
            }
        }
        
        Collections.sort(list);
        answer = new int[list.size()];
        for(int i=0; i<list.size(); i++){
            answer[i] = list.get(i);
        }
        
        return answer;
    }
}

 

처음에는 저 반복되는 구간을 식으로 표현하려고 했는데

알고리즘 자체를 공부하기보다 반복구간 구현하는데 시간이 더 걸릴것같아

그냥 적어놓고 했다.