[알고리즘/프로그래머스] 42840. 모의고사

jae_s_a·2022년 9월 27일
0

프로그래머스

목록 보기
17/26

문제

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


모의고사

문제 설명


지금까지 풀었던 문제 중 가장 후회된 문제이다.
수포자들을 % N으로 처리를 해주는 것까지 어렵진 않았으나 가장 많은 문제를 맞힌 사람을 출력하는 것에서 정말 많은 어려움을 겪었던 것 같다.

근데.. 하루종일 붙잡고 있던 건 아니었지만 그래도 나름 이틀동안 풀었는데 풀리지 않아서 홧김에 출력하는 부분을 다른 사람의 포스팅을 보고 풀었다는 것에 후회가 되었다.

프로그래머스는 문제수가 많지 않아서 되도록이면 자력으로 풀어야지 라고 생각했지만 안풀린다는 이유로 다른 사람이 푼 코드를 참고한 게 조금 아쉬웠던 것 같다.

하다 못해 if문 왕창써서라도 내 힘으로 풀어서 할 걸 그랬다...

코드 중 // 이 부분부터 ... // 이 부분까지가 다른 사람의 코드를 참고했던 것이다...!


package programmers;

public class NO42840 {
    public static void main(String[] args) {

        NO42840 no42840 = new NO42840();

        int[] answer = {1,2,3,4,5};

        no42840.solution(answer);

    }

    public int[] solution(int[] answers) {

        int[][] supo = {
                {1, 2, 3, 4, 5},
                {2, 1, 2, 3, 2, 4, 2, 5},
                {3, 3, 1, 1, 2, 2, 4, 4, 5, 5}
        };
        int[] curr = {0, 0, 0};

        for (int i = 0; i < answers.length; i++) {
            // supor1
            if(answers[i] == supo[0][i % 5]) {
                curr[0]++;
            }

            if(answers[i] == supo[1][i % 8]) {
                curr[1]++;
            }

            if(answers[i] == supo[2][i % 10]) {
                curr[2]++;
            }
        }

        int max=0;
        int result_cnt=0;

        // 이 부분부터
        for(int i=0;i<3;i++){
            if( curr[i]>=max )
                max=curr[i];
        }

        for(int i=0;i<3;i++){
            if( curr[i]==max )
                result_cnt+=1;
        }

        int answer[] = new int[result_cnt];

        result_cnt=0;
        for(int i=0;i<3;i++){
            if( curr[i]==max )
                answer[result_cnt++]=i+1;
        }
        // 여기까지
        return answer;
    }
}
profile
if not now, when

0개의 댓글