[ Programmers ] 모의고사 (Java)

ma.caron_g·2021년 12월 4일
0

Lv.1 - Programmers (완성)

목록 보기
63/74
post-thumbnail

1. Problem 📃

[ 모의고사 ]

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



2. Constraint 🔗



3. Solution 🔑


4. Code 💻

[ 이전에 푼 코드 (왜 이렇게 풀었지.. 리스트 개념을 몰랐을 때) ]

import java.util.ArrayList;

class Solution {
    public Integer[] solution(int[] answers) {
        
        
        int[][] person = {{1, 2, 3, 4, 5},
        				{2, 1, 2, 3, 2, 4, 2, 5},
        				{3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }};
        
        int[] score = new int[3];
        
        for(int i=0; i<answers.length; i++) {
        	if(person[0][i%5] == answers[i]) {
        		score[0]++;
        	}
        	if(person[1][i%8] == answers[i]) {
        		score[1]++;
        	}
        	if(person[2][i%10] == answers[i]) {
        		score[2]++;
        	}
        }
        
        int[] smarter = new int[3];
        smarter[0] = 1;
        int smart = 0;
        int max = score[0];
        int count = 1;
        for(int i=1; i<3; i++) {
        	if(score[i] > max) {
        		max = score[i];
        		smarter[smart] = 0;
        		smarter[i] = 1;
        		smart = i;
        		count = 1;
        		
        	}
        	else if(score[i] == max) {
        		smarter[i] = 1;
        		count++;
        	}
        }
        
        Integer[] answer = new Integer[count];
        
        ArrayList<Integer> list = new ArrayList<Integer>();
       
        int index = 1;
        for(int i : smarter) {
        	if(i == 1) {
        		list.add(index);
        	}
        	index++;
        }
        
        answer = list.toArray(new Integer[list.size()]);
        
        return answer;
    }
}

[ 리스트 개념을 알고 난 후 풀이 ]

import java.util.ArrayList;

class Solution {
    public int[] solution(int[] answers) {
        
        int[][] person = {{1, 2, 3, 4, 5},
        				{2, 1, 2, 3, 2, 4, 2, 5},
        				{3, 3, 1, 1, 2, 2, 4, 4, 5, 5 }};
        
        int[] score = new int[3];
        
        for(int i=0; i<answers.length; i++) {
        	if(person[0][i%person[0].length] == answers[i]) {
        		score[0]++;
        	}
        	if(person[1][i%person[1].length] == answers[i]) {
        		score[1]++;
        	}
        	if(person[2][i%person[2].length] == answers[i]) {
        		score[2]++;
        	}
        }
        
        ArrayList<Integer> list = new ArrayList<Integer>();
        
        int MaxScore = Math.max(score[0], Math.max(score[1], score[2]));
        
        for(int i=0; i<score.length; i++) {
        	if(score[i] == MaxScore) {
        		list.add(i+1);
        	}
        }
        int[] answer = new int[list.size()];
        
        for(int i=0; i<list.size(); i++) {
        	answer[i] = list.get(i);
        }
        
        return answer;
    }
}

5. Growth 🍄

.toArray() 를 이용해서 리스트를 배열로 변경 가능 (단 배열이 참조형 변수의 배열이여야 함.)
리스트.toArray(new 참조형타입[리스트.size()]);

리스트 개념을 몰랐을 때의 내가 푼 풀이는... 좀 많이 당화스럽다... 더욱 간단하게 표현 가능하지만, 모르는 상태로 풀어냈다는 것만으로도 대견하다고 생각한다. 👍🏻
profile
다른 사람이 만든 것을 소비하는 활동보다, 내가 생산적인 활동을 하는 시간이 더 많도록 생활화 하자.

0개의 댓글