뚱땅뚱땅

[문제] 프로그래머스 레벨1: 모의고사 본문

알고리즘/프로그래머스

[문제] 프로그래머스 레벨1: 모의고사

양순이 2021. 2. 15. 18:06
728x90

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

 

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

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

programmers.co.kr

풀이

import java.util.ArrayList;
import java.util.Iterator;
class Solution {
    
    public int[] solution(int[] answers) {
        
        ArrayList<Integer>list = new ArrayList<>();
        int[] s1 = {1,2,3,4,5}; //5
        int[] s2 = {2,1,2,3,2,4,2,5};//8
        int[] s3 = {3,3,1,1,2,2,4,4,5,5};//10
        int d1=0, d2=0,d3=0;
        int t1 =0, t2 = 0,t3=0;
        for(int i=0;i<answers.length;i++){
            if(answers[i] == s1[d1]) t1++;
            if(answers[i] == s2[d2]) t2++;
            if(answers[i] == s3[d3]) t3++;
            
            d1 = (d1+1)%5;
            d2 = (d2+1)%8;
            d3 = (d3+1)%10;
        }
        int max1 = Math.max(t1,t2);
        int max = Math.max(max1,t3);
        if(max == t1){
            list.add(1);
        }
        if(max == t2){
            list.add(2);
        }
        if(max == t3){
            list.add(3);
        }
        int size = list.size();
        Iterator<Integer> it = list.iterator();
        int answer[] = new int[size];
        int i =0;
        while(it.hasNext()){
            answer[i++] = it.next();
        }
        return answer;
    }
}

좀 더 깔끔하게 정리한 코드는 아래

import java.util.ArrayList;

class Solution {
    
    public int[] solution(int[] answers) {
        
        ArrayList<Integer>list = new ArrayList<>();
        int[] s1 = {1,2,3,4,5}; //5
        int[] s2 = {2,1,2,3,2,4,2,5};//8
        int[] s3 = {3,3,1,1,2,2,4,4,5,5};//10
        int t1 =0, t2 = 0,t3=0;
        for(int i=0;i<answers.length;i++){
            if(answers[i] == s1[(i)%5]) t1++;
            if(answers[i] == s2[(i)%8]) t2++;
            if(answers[i] == s3[(i)%10]) t3++;
            
        }
        int max = Math.max(Math.max(t1,t2),t3);
        if(max == t1){
            list.add(1);
        }
        if(max == t2){
            list.add(2);
        }
        if(max == t3){
            list.add(3);
        }
        int size = list.size();
        
        int answer[] = new int[size];
        int i =0;
        for(int num: list){
            answer[i++] = num;
        }
        return answer;
    }
}
728x90
Comments