CodingTest Practice/Programmers

프로그래머스 : 모의고사 (C++, Lv.1)

몽땅마니아(MDD) 2021. 12. 30. 15:54
#include <string>
#include <vector>

using namespace std;

int supoja_1[] = {1, 2, 3, 4, 5};
int supoja_2[] = {2, 1, 2, 3, 2, 4, 2, 5};
int supoja_3[] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};


//1번 수포자 패턴 : 1, 2, 3, 4, 5
//2번 수포자 패턴 : 2, 1, 2, 3, 2, 4, 2, 5
//3번 수포자 패턴 : 3, 3, 1, 1, 2, 2, 4, 4, 5, 5
vector<int> solution(vector<int> answers) {
    vector<int> answer;
    //인원별 정답 갯수 변수
    int ans_1 = 0, ans_2 = 0, ans_3 = 0;
    //현재 문제번호 변수
    int cur_num = 0;
    
    //문제 완전 탐색
    for(int cur_num = 0; cur_num < answers.size(); cur_num++) {
        int ans = answers[cur_num];
        if(supoja_1[cur_num%5] == ans) ans_1++;
        if(supoja_2[cur_num%8] == ans) ans_2++;
        if(supoja_3[cur_num%10] == ans) ans_3++;
    }
    
    //최대 맞은 수 찾기
    int biggest = ans_1;
    if(biggest < ans_2) biggest = ans_2;
    if(biggest < ans_3) biggest = ans_3;
    
    //최대 맞은 수와 같은 인원 정답에 집어넣기
    if(biggest == ans_1) answer.push_back(1);
    if(biggest == ans_2) answer.push_back(2);
    if(biggest == ans_3) answer.push_back(3);
    
    return answer;
}