본문 바로가기
Programming Solve/프로그래머스

프로그래머스 - 모의고사 / C++

by msm1029 2022. 2. 6.
반응형

문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42840

 

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

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

programmers.co.kr

 

문제 풀이

수포자 3인방의 찍는 방식을 미리 배열에 담아두고 answers 배열을 돌며 정답이면 3인방의 카운트 배열에 ++해주면 된다.

가장 높은 점수인 사람을 배열에 담아 리턴해주면 된다. 동점자인 경우도 포함한다.

 

소스 코드

#include <vector>

using namespace std;

vector<int> solution(vector<int> answers) {
    int arr1[5] = {1,2,3,4,5};
    int arr2[8] = {2,1,2,3,2,4,2,5};
    int arr3[10] = {3,3,1,1,2,2,4,4,5,5};
    int cnt[3] = { 0, };
    
    vector<int> ret;
    
    for(int i=0; i<answers.size(); i++){
        if(arr1[i%5] == answers[i]) cnt[0]++;
        if(arr2[i%8] == answers[i]) cnt[1]++;
        if(arr3[i%10] == answers[i]) cnt[2]++;
    }
    
    int maxVal = cnt[0];
    for(int i=1; i<3; i++){
        if(maxVal < cnt[i])
            maxVal = cnt[i];
    }
    
    for(int i=0; i<3; i++){
        if(maxVal == cnt[i])
            ret.push_back(i+1);
    }
    
    return ret;
}
반응형