Algorithm/프로그래머스

[고득점kit/완전탐색] 모의고사

녱녱 2023. 7. 6.

사실 문제를 똑바로 안읽고 그냥 냅다 풀다가 어라라? 1번/2번/3번이 주어진게 없는데?!해버린 문제이다. 새삼 다시 한 번 문제를 똑바로 읽어야겠다고 생각하게 되었다지요..


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

각각의 인원이 문제를 푸는 방식이 주어졌기 때문에 배열에 값을 넣는 방식으로 초기화 해주고 for문을 돌면서 비교해 점수를 계산하는 방식으로 문제를 풀었다! 그냥 정수 상태이기 때문에 max 함수를 사용해서 값을 비교해줬다. 처음엔 냅다 배열에 미리 넣어놓고 풀까?라고 생각했지만 max값이랑 각각 점수 비교해서 다시 구할거 생각하면 list가 훨씬 편리 할 것 같아서 우선 list에 저장하고 배열에 다시 저장하는 방식으로 문제를 풀었다!

댓글