C++/programmers 코딩테스트(level 1) C++

[C/C++] programmers Level 1 모의고사

CE : 하랑 2023. 10. 8. 22:15

 

 

 

코드

 

#include <vector>
#include <algorithm> // *max_element

using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    
    int n1[5]={1,2,3,4,5}; // 1번 수포자 패턴
    int n2[8]={2,1,2,3,2,4,2,5}; // 2번 수포자 패턴
    int n3[10]={3,3,1,1,2,2,4,4,5,5}; // 3번 수포자 패턴
    
    vector<int> check={0,0,0}; // 맞은 갯수 체크
    
    for(int i=0;i<answers.size();i++){  
        if(n1[i%5]==answers[i]){ // n1
            check[0]++;
        }
        
        if(n2[i%8]==answers[i]){ // n2
            check[1]++;
        }
        
        if(n3[i%10]==answers[i]){ // n3
            check[2]++;
        }
    }
    
    int maxnum=*max_element(check.begin(), check.end()); // check 값 중 가장 큰 값
    
    for(int i=0;i<3;i++){
        if(maxnum==check[i]){ // 가장 높은 점수를 받은 사람이 여럿일 경우가 있기에 가장 큰 값과 비교 후 같으면 answer 값에 추가
            answer.push_back(i+1);
        }
    }
    
    return answer;
}