비버놀로지

[Programmers 프로그래머스] 42840 모의고사 본문

ALGORITM/JAVA

[Programmers 프로그래머스] 42840 모의고사

KUNDUZ 2021. 1. 7. 01:51
728x90

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

 

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

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

programmers.co.kr

수포자들의 번호를 찍는 방식을 입력해 준후, 길이가 넘어가면 처음부터 다시 찍도록 만들어 준다.

그후 맞춘갯수가 최대인 값을 구하고, 이와 같은 수포자를 배열에 담아준다.

 

import java.util.ArrayList;
import java.util.Arrays;

class Solution {
    public int[] solution(int[] answers) {
        int a[]={1,2,3,4,5};	//1번 수포자가 찍는 방식
        int b[]={2,1,2,3,2,4,2,5};	//2번 수포자가 찍는 방식
        int c[]={3,3,1,1,2,2,4,4,5,5};	//3번 수포자가 찍는 방식
        int answer[];
        int temp[]=new int[4];
        for (int i = 0; i < answers.length; i++) {
			if(a[i%a.length]==answers[i]) {	//길이가 넘어갈때 다시 앞으로
				temp[1]++;
			}
			if(b[i%b.length]==answers[i]) {	//길이가 넘어갈때 다시 앞으로
				temp[2]++;
			}
			if(c[i%c.length]==answers[i]) {	//길이가 넘어갈때 다시 앞으로
				temp[3]++;
			}
		}
        int num=0;
        for (int i = 0; i < temp.length; i++) {	//최대값을 찾기
			if(temp[i]>num) {
				num=temp[i];
			}
		}
        ArrayList<Integer> que=new ArrayList<Integer>();	//최대값이 여러개일 경우 넣어줄 리스트
        for (int i = 0; i < temp.length; i++) {		//최대값과 같은 값을 리스트에 넣어준다.
			if(temp[i]==num) {	
				que.add(i);
			}
		}
        answer=new int[que.size()];
        for (int i = 0; i < answer.length; i++) {	//리스트에 있는 값을 배열로 만들어 준다.
			answer[i]=que.get(i);
		}
        Arrays.sort(answer);
        
        return answer;
    }
}
728x90
Comments