문제 풀이 (JAVA)

import java.util.*;
class Solution {
    public int[] solution(int[] answers) {

        int [] one ={1,2,3,4,5}; // 1번 수포자 답안
        int [] two ={2,1,2,3,2,4,2,5}; // 2번 수포자 답안
        int [] three = {3,3,1,1,2,2,4,4,5,5}; // 3번 수포자 답안
        int cnt1=0;
        int cnt2=0;
        int cnt3=0;
        int [] resultcnt={0,0,0};
        for(int i=0; i<answers.length; i++){
            if(answers[i]==one[i%5]){ // 5로 나눈 나머지는 1번 수포자 답안을 반복 비교한다.
                resultcnt[0]++; // 1번 수포자 답안 카운트 증가
            }
            if(answers[i]==two[i%8]){ // 8로 나눈 나머지는 2번 수포자 답안을 반복 비교한다.
                resultcnt[1]++; // 2번 수포자 답안 카운트 증가
            }
            if(answers[i]==three[i%10]){ // 10으로 나눈 나머지는 3번 수포자 답안을 반복 비교한다.
                resultcnt[2]++; // 3번 수포자 답안 카운트 증가
            }
        }
        int max=0;
        for(int i=0; i<resultcnt.length; i++){
            if(max<resultcnt[i]){
                max=resultcnt[i]; // 가장 많이 맞춘 답안을 구한다.
            }
        }
        List<Integer> list =new ArrayList<Integer>();
        for(int i=0; i<resultcnt.length; i++){
            if(max==resultcnt[i]){ // 동일한 점수를 가진 경우를 계산하기 위하여 max값과 비교한다. 
                list.add(i+1);  // 가장 많이맞춘 답안이 여러개일시 i+1번째 수포자를 각각 추가한다.
            }
        }
        Collections.sort(list); // 오름차순 정렬
        int[] answer = new int[list.size()];
        for(int i=0; i<list.size(); i++){
            answer[i]=list.get(i); // 리스트에 있는 값을 배열로 저장하여 출력한다.
        }
        
        return answer;
    }
}

주요 핵심 포인트

1. 답안을 찍는 패턴을 각 수포자 배열마다 선언하였다.

2. 각각의 맞은 갯수를 저장하는 카운트 변수를 생성하여 답안 배열이 각 수포자 배열의 패턴 숫자와 같다면 답안 카운트를 증가시켰다.

3. 동일한 최대점수를 가진 경우를 처리하기 위하여 가장 큰 점수 값을 비교하여 동일할시 여러명을 출력하도록 for문에 list로 추가하였다.

4.  Collections.sort를 사용하여 오름차순 정렬하여 값을 출력하였다.

'프로그래머스(JAVA)' 카테고리의 다른 글

소수 만들기  (0) 2022.05.21
완주하지 못한 선수  (0) 2022.05.21
폰켓몬  (0) 2022.05.21
실패율  (0) 2022.05.21
약수의 개수와 덧셈  (0) 2022.05.21

+ Recent posts