[프로그래머스] - 모의고사(Java)

병찬·2022년 4월 6일
0

프로그래머스

목록 보기
46/52
post-thumbnail

문제📝


풀이💡

  • 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

profile
코딩을 열심히 하고 있습니다:)

0개의 댓글

관련 채용 정보