유블로그

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

알고리즘

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

yujeong kang 2021. 1. 3. 16:39

프로그래머스 level1 모의고사

 

소요시간 : 30분

 

이게 뭐라고 30분이나 걸렸나 싶지만 ,, 껄껄

 

 

그냥 미리 사람마다 정답 패턴 배열에 저장해놓고 answers와 쭉 비교하면 된당

정답이면 score 올려서 마지막에 score 배열 정렬하여

ArrayList에 정답자들 add 하고 in[] 배열로 바꿔서 return 했다.

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Comparator;
import java.util.List;

class Solution {
    public int[] solution(int[] answers) {
    	int[][] score = new int[3][2];
    	for (int i = 0; i < 3; i++) {
			score[i][0] = i;
		}
    	
    	int[] per1 = {1,2,3,4,5};
    	int[] per2 = {2,1,2,3,2,4,2,5};
    	int[] per3 = {3,3,1,1,2,2,4,4,5,5};
    	
    	int idx1 = 0, idx2 = 0, idx3 = 0;
    	for (int i = 0; i < answers.length; i++) {
			if(idx1 == 5) idx1 = 0;
			if(idx2 == 8) idx2 = 0;
			if(idx3 == 10) idx3 = 0;
			if(answers[i] == per1[idx1++]) score[0][1]++;
			if(answers[i] == per2[idx2++]) score[1][1]++;
			if(answers[i] == per3[idx3++]) score[2][1]++;
		}
    	
    	Arrays.sort(score, new Comparator<int[]>() {
			@Override
			public int compare(int[] o1, int[] o2) {
				return o2[1]-o1[1];
			}
    	});
    	
    	List<Integer> list = new ArrayList<>();
    	int max = score[0][1];
    	list.add(score[0][0]);
    	for (int i = 1; i <= 2; i++) {
			if(max == score[i][1]) list.add(score[i][0]);
			else break;
    	}
    	int[] answer = new int[list.size()];
    	for (int i = 0; i < list.size(); i++) {
			answer[i] = list.get(i)+1;
		}
    	return answer;
    }
}