[プログラマー]-模擬試験(Java)


質問する📝




に答える💡

  • 1番、2番、3番の水泡者の撮影方式をそれぞれ配列に入れます.
  • 1番小胞子は5回、2番小胞子は8回、3番小胞子は10回.
  • の最大値を求め、最大値と同じであればaddを用いて小胞子の分数に加えた.
  • コード#コード#💻

    /*
     * 프로그래머스 Lv1 - 모의고사
     * 문제링크: https://programmers.co.kr/learn/courses/30/lessons/42840
    */
    
    import java.util.*;
    
    class Solution {
        public int[] solution(int[] answers) {
            ArrayList<Integer> list = new ArrayList<Integer>();
    	
            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}; 
    		
            int[] scores = {0,0,0};
            int[] answer = {};
    		
            for(int i=0; i<answers.length; i++){
                 if(first[i%5] == answers[i]){scores[0]++;} 
    	         if(second[i%8] == answers[i]){scores[1]++;} 
    	         if(third[i%10] == answers[i]){scores[2]++;} 
            }
    		
            int max = 0; 
            for(int i=0; i<3; i++) {
    	    if(scores[i]>max)
    	        max = scores[i];
             }
    		
             if(max == scores[0])list.add(1); 
             if(max == scores[1])list.add(2);
             if(max == scores[2])list.add(3);
    		
             answer = new int[list.size()];
    		
             for(int i =0; i<answer.length; i++) {
    	         answer[i] = list.get(i);
             }
            
            return answer;
        }
    }

    結果😎



    に感銘を与える👨‍💻


    最初は思ったより指紋が長かったのでどうやって解けばいいのか分かりませんでしたが、問題をよく見てみると、各実行者の点数を反映した配列を作ればいいので、まず最大値を求めてから比較するという問題がありました.対応するアルゴリズムを制定し,問題を解決した.

    Sinbmilのアルゴリズム問題コード


    -> https://github.com/Sinbmil/Algorithm-Study