JAVA/Algorithm

[프로그래머스/java] 모의고사

nang. 2020. 10. 21. 23:25
반응형
SMALL

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

 

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

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

programmers.co.kr

import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        
        // 문제에 주어진대로 규칙을 그냥 배열에 넣어줌 (동일하게 반복되므로)
        int first[] = {1,2,3,4,5};
        int second[] = {2,1,2,3,2,4,2,5};
        int third[] = {3,3,1,1,2,2,4,4,5,5};
        
        // 사람 배열 선언 (총 3명)
        int person[] = new int[3]; // default 0으로 초기화
        
        for(int i = 0; i < answers.length; i++){
            if(answers[i] == first[i % first.length]) // 하나의 배열이 아니라 계속 반복되는거니까 나머지 값으로 위치 지정
                person[0]++;
            if(answers[i] == second[i % second.length])
                person[1]++;
            if(answers[i] == third[i % third.length])
                person[2]++;
        }
        
        int max = Math.max(Math.max(person[0], person[1]), person[2]); // 이제 3개 중에 제일 큰 값 찾아주기
        // Math.max 함수는 인자 2개짜리 함수니까 2개먼저 구하고 다시 함수 돌림
        
        // 이제 정답 리스트 선언
        List<Integer> maxPerson = new ArrayList<Integer>();
        
        // 가장 큰 값이랑 같으면 그 사람 번호(i+1) 리스트에 넣기
        for(int i = 0; i < person.length; i++){
            if(max == person[i]) {
                maxPerson.add(i+1);
            }
        }
        
        // 동일한 사람 있으면 오름차순
        Collections.sort(maxPerson);
        
        answer = new int[maxPerson.size()];
        
        // 배열에 옮겨줌
        for(int i = 0; i < answer.length; i++){
            answer[i] = maxPerson.get(i);
        }
        
        // 배열 반환
        return answer;
    }
}
반응형
LIST