프로그래머스 Level1 - 모의고사

JH·2022년 12월 16일
0
post-thumbnail

문제

입력

출력

예제

idea

while문을 돌리며 정답의 수만큼 while문이 돌아가고
1,2,3번 수포자들은 각 개수로 나머지 연산을 하여 계속해서 돌아가도록 하였다.
그 후 맞춘 개수의 최대값을 뽑아서 그 수와 같은 정답률인 사람을 list에 넣고 배열로 바꿨다.

Code

import java.util.*;
import java.io.*;

class Solution {
    public int[] solution(int[] answers) {
        
        
        int person_1[] ={1,2,3,4,5};
        int person_2[] ={2,1,2,3,2,4,2,5};
        int person_3[] ={3,3,1,1,2,2,4,4,5,5};                    
        int p_n_1 = 0,p_n_2=0,p_n_3=0; //수포자의 찍는 방식이 몇번째인지  
        int num_1=0,num_2=0,num_3=0; //몇개 맞았나 체크
        int num = answers.length;
        
        int cnt=0;
        while(cnt < num){
            System.out.println("cnt "+cnt);
            p_n_1=cnt%person_1.length;
            p_n_2=cnt%person_2.length;
            p_n_3=cnt%person_3.length;
            
            if(answers[cnt]==person_1[p_n_1])
                num_1++;
            if(answers[cnt]==person_2[p_n_2])
                num_2++;
            if(answers[cnt]==person_3[p_n_3])
                num_3++;
            
            cnt++;//answer위치
            
        }
      
        int max = Math.max(num_1,num_2);
        max = Math.max(max,num_3);
        
        ArrayList<Integer> answer = new ArrayList<>();
    
        
        int array_cnt=0;
        if(max == num_1)
            answer.add(1);       
        if(max == num_2)
            answer.add(2);    
        if(max == num_3)
            answer.add(3);
         
        int[] ans = new int[answer.size()];
        
        for(int i=0;i<answer.size();i++){
            ans[i]=answer.get(i);
        }
        
        return ans;
    }
}

결과

0개의 댓글