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

 

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

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

programmers.co.kr

 

 

문제 분석

- 학생 1,2,3번이 수학을 찍는 방식의 규칙을 구한다.

- 반복되는 숫자들을 각각 배열에 담아 처리한다.

- mod를 사용하여 반복되는 정답을 처리한다.

- 가장 높은 점수를 받은 사람을 반환하고, 여러 명인 경우 오름차순으로 정렬한다.

 

 

문제 풀이

1. person1,2,3 배열을 통해 각각 반복하는 방식을 담는다.

2. while문을 통해 각각 반복되는 경우를 계산한다.

3. mod(idx%반복되는 숫자 길이)를 이용하여 정답을 맞는지 처리한다.

4. Math.max를 사용하여 가장 큰 값을 구한다.

5. 가장 높은 점수(cnt에 담김)를 받은 학생을 list에 추가한다.

6. for문을 통해 가장 높은 사람을 구하고, 여러 명인 경우 오름차순 정렬한다.

import java.util.*;

class Solution {
    int[] answer;
    
    public int[] solution(int[] answers) {
        int[] person1 = new int[]{1, 2, 3, 4, 5};
        int[] person2 = new int[]{2, 1, 2, 3, 2, 4, 2, 5};
        int[] person3 = new int[]{3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
        int[] cnt = new int[3];
        
        int idx = 0;
        while(true){
            if(idx == answers.length){
                break;
            }
            
            if(person1[idx%5]==answers[idx]){
                cnt[0]++;
            }
            if(person2[idx%8]==answers[idx]){
                cnt[1]++;
            }
            if(person3[idx%10]==answers[idx]){
                cnt[2]++;
            }
                
            idx++;
        }
        
        int max = Math.max(Math.max(cnt[0], cnt[1]), cnt[2]);
       
        ArrayList<Integer> list = new ArrayList<>();
        if(cnt[0]==max){
            list.add(1);
        }
        if(cnt[1]==max){
            list.add(2);
        }
        if(cnt[2]==max){
            list.add(3);
        }
        
        answer = new int[list.size()];
        
        for(int i=0;i<list.size();i++){
            answer[i] = list.get(i);
        }
        return answer;
    }
}

 

 

https://github.com/SOEUN2/Algorithm

'Algorithm > programmers' 카테고리의 다른 글

programmers 완주하지 못한 선수  (0) 2022.03.13
programmers K번째수  (0) 2022.03.13
programmers 체육복  (0) 2022.03.13
programmers 폰켓몬  (0) 2022.03.13
programmers 실패율  (0) 2022.03.13