개발공부/코딩테스트 연습문제

[프로그래머스] 모의고사

ku-na 2022. 1. 7. 11:56

문제 설명과 제한조건

풀이

import java.util.ArrayList;
import java.util.Arrays;
class Solution {
    public int[] solution(int[] answers) {
        int[][] poza = {{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 = {0,0,0};
        int[] answer;
        int max;
        int count = 0;
        for(int i = 0; i < answers.length; i++){
            if(poza[0][i%5] == answers[i]) score[0]++;
            if(poza[1][i%8] == answers[i]) score[1]++;
            if(poza[2][i%10] == answers[i]) score[2]++;
        }
        
        max = Math.max(score[0], Math.max(score[1], score[2]));;
        
        for(int i = 0; i < score.length; i++){
            if(score[i] == max) count++;
        }
        answer = new int[count];
        count = 0;
        for(int i = 0; i < score.length; i++){
            if(score[i] == max) {
                answer[count] = i+1;
                count++;
            }
        }
        
        return answer;
    }
}

++

사실 리스트로 풀고 싶어서 이것 저것 시도하다 시간이 엄청 오래 걸렸다.

3번까지 없다보니 그리고 배열로 반환하다보니.. 하드코딩이 돼서 마음이 아프다.

 

1. max = Math.max(score[0], Math.max(score[1], score[2]));

   최댓값을 구하는 문제 기본 score[1] 과 score[2]를 비교해서 높은 값을 score[0] 과 비교하는 방법인 것 같다.

  사실 비교 갯수가 많지 않아서 다행이었다...