본문 바로가기
알고리즘/프로그래머스

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

by binghe819 2020. 7. 3.

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

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는 ��

programmers.co.kr

1. 풀이


나머지 연산을 물어보는 문제인 듯하다.

 

1, 2, 3, 4, 5, 1, 2, 3, 4, 5 ... 처럼 5개가 반복된다면 i%5를 하면 된다.

 

마지막에 answer에 제일 많이 맞은 수포자의 번호를 넣기위해 ArrayList를 사용했지만, 다른 방법도 많을듯싶다.

 

2. 코드


import java.util.*;
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[] score = {0, 0, 0};

        for(int i = 0; i < answers.length; i++){
            if(answers[i] == person1[i%5])
                score[0]++;
            if(answers[i] == person2[i%8])
                score[1]++;
            if(answers[i] == person3[i%10])
                score[2]++;

        }

        // 최대값 찾기
        int max = 0;
        for(int i = 0; i < 3; i++){
            if(score[i] > max)
                max = score[i];
        }

        // 최대값과 같은 수포자 찾기
        ArrayList<Integer> tmp = new ArrayList<>();
        for(int i = 0; i < 3; i++){
            if(score[i] == max){
                tmp.add(i+1);
            }
        }

        // 최대값과 같은 수포자 answer에 넣기.
        int[] answer = new int[tmp.size()];
        for(int i = 0; i < tmp.size(); i++)
            answer[i] = tmp.get(i);

        return answer;
    }
}

댓글