[프로그래머스]완전탐색-모의고사

snusun·2021년 1월 15일
0
  • 첫번째 풀이
import java.util.*;

class Solution {
    public int[] solution(int[] answers) {
        int[] answer = {0, 0, 0};
        int[] std1 = {1, 2, 3, 4, 5};
        int[] std2 = {2, 1, 2, 3, 2, 4, 2, 5};
        int[] std3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

        for(int i=0; i<answers.length; i++){
            if(std1[i%5] == answers[i]) answer[0]++;
            if(std2[i%8] == answers[i]) answer[1]++;
            if(std3[i%10] == answers[i]) answer[2]++;
        }

        if(answer[0] == answer[1] && answer[1] == answer[2]){
            int[] who = {1, 2, 3};
            return who;
        } else if(answer[0] == answer[1] && answer[1] > answer[2]) {
            int[] who = {1, 2};
            return who;
        } else if(answer[1] == answer[2] && answer[2] > answer[0]) {
            int[] who = {2, 3};
            return who;
        } else if(answer[2] == answer[0] && answer[0] > answer[1]) {
            int[] who = {1, 3};
            return who;
        } else if(answer[0] > answer[1] && answer[0] > answer[2]) {
            int[] who = {1};
            return who;
        } else if(answer[1] > answer[0] && answer[1] > answer[2]) {
            int[] who = {2};
            return who;
        } else {
            int[] who = {3};
            return who;
        }
    }
}

결과 리턴할 때 보기 안좋아서 리스트로 다시 구현해보려 함

  • 개선된 풀이
import java.util.*;

class Solution {
    public int[] solution(int[] answers) {
        int[] score = new int[3];
        int[] std1 = {1, 2, 3, 4, 5};
        int[] std2 = {2, 1, 2, 3, 2, 4, 2, 5};
        int[] std3 = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

        for(int i=0; i<answers.length; i++){
            if(std1[i%5] == answers[i]) score[0]++;
            if(std2[i%8] == answers[i]) score[1]++;
            if(std3[i%10] == answers[i]) score[2]++;
        }

        int max = Math.max(score[0], Math.max(score[1], score[2]));
        List<Integer> list = new ArrayList<>();
        for(int i=0; i<3; i++){
            if(max == score[i]) list.add(i+1);
        }

        int[] answer = new int[list.size()];
        int cnt=0;;
        for(int num : list){
            answer[cnt++] = num;
        }
        return answer;
    }
}

저번에 ArrayList를 쓸 때 크기가 가변적이라는 특성이 생각나서 ArrayList를 이용하였다.

profile
대학생 근데 이제 컴공을 곁들인

0개의 댓글