본문 바로가기
Algorithm/PROGRAMMERS[Java]

Lv1. 모의고사

by 씨니 2022. 4. 21.
728x90

▶ 문제

 

▶ 풀이방법

- 첫번째 풀이방법.

import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        int[] n1 = new int[answers.length];
        int[] n2 = new int[answers.length];
        int[] n3 = new int[answers.length];
        
        int count = 0;
        for(int i = 0; i < answers.length; i++){//1번 수포자가 입력한 문제의 답
            if(i % 5 == 0) count = 1;
            n1[i] = count;
            count++;
        }
        
        count = 1;
        for(int i = 0; i < answers.length; i++){//2번 수포자가 입력한 문제의 답
            if(i % 2 == 0) count = 2;
            else {
            	if(i > 1) {
            		switch(n2[i-2]) {
	            		case 1 :
	            			count = 3;
	            			break;
	            		case 3 :
	            			count = 4;
	            			break;
	            		case 4 :
	            			count = 5;
	            			break;
	            		case 5 :
	            			count = 1;
	            			break;
            		}
            	}else {
            		count = 1;
            	}
            }
            n2[i] = count;
        }
        
        count = 3;
        for(int i = 0; i < answers.length; i++){//3번 수포자가 입력한 문제의 답
            if(i > 1) {
            	switch(n3[i-2]) {
            		case 3 :
            			count = 1;
            			break;
            		case 2 :
            			count = 4;
            			break;
            		case 5 :
            			count = 3;
            			break;
            		case 1 :
            			count = 2;
            			break;
            		case 4 :
            			count = 5;
            			break;
            	}
            	
            }
            n3[i] = count;
        }
        
        int[] num = new int[3];
        for(int i = 0; i < answers.length; i++) {//각 수포자의 정답 수 구하기
        	if(n1[i] == answers[i]) num[0]++;
        	if(n2[i] == answers[i]) num[1]++;
        	if(n3[i] == answers[i]) num[2]++;
        }
        
        int max = 0; //최대 정답 수 저장공간
        String str = "";
        for(int i = 0; i < 3; i++) max = Math.max(max, num[i]);
        for(int i = 0; i < 3 ; i++) {
        	if(max == num[i]) str += i+1; //최대 정답 갯수와 같은 수포자 저장.
        }
        
        answer = new int[str.length()];
        for(int i = 0; i < str.length(); i++) {
        	answer[i] = Integer.parseInt(str.substring(i,i+1));
        }
        Arrays.sort(answer);
        return answer;
    }
}

↑위의 코드는 직접 1,2,3의 수포자가 입력한 정답을 일일이 구함..

 

- 두번째 풀이방법

import java.util.*;
class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {};
        int[] n1 = {1,2,3,4,5};
        int[] n2 = {2,1,2,3,2,4,2,5};
        int[] n3 = {3,3,1,1,2,2,4,4,5,5};
        
        int[] num = new int[3];
        for(int i = 0; i < answers.length; i++) { //코드 일일이 구하지 않고 나머지 값으로 배열 비교
        	if(n1[i%5] == answers[i]) num[0]++;
        	if(n2[i%8] == answers[i]) num[1]++;
        	if(n3[i%10] == answers[i]) num[2]++;
        }
        
        int max = 0;
        String str = "";
        for(int i = 0; i < 3; i++) max = Math.max(max, num[i]);
        for(int i = 0; i < 3 ; i++) {
        	if(max == num[i]) str += i+1;
        }
        
        answer = new int[str.length()];
        for(int i = 0; i < str.length(); i++) {
        	answer[i] = Integer.parseInt(str.substring(i,i+1));
        }
        Arrays.sort(answer);
        return answer;
    }
}

- 첫번째 코드를 간단하게 구현,,!

728x90

'Algorithm > PROGRAMMERS[Java]' 카테고리의 다른 글

Lv1. 완주하지 못한 선수  (0) 2022.04.24
Lv1. K번째 수  (0) 2022.04.24
Lv1. 체육복  (0) 2022.04.21
Lv1. 폰켓몬  (0) 2022.04.20
Lv1. 실패율[카카오]  (0) 2022.04.18