본문 바로가기

코딩 테스트/프로그래머스

[Level 1, C++] 모의고사

728x90
반응형
반응형

문제: 모의고사


풀이 방법

문제를 찍는 방식이 3명 모두 다르니까 반복자를 다르게 설정해줘야 겠다고 생각했다.

for문의 반복자 하나로 간단하게 만들 방법이 반드시 있을거라고 생각하긴 했는데

그 방법이 떠오르지 않아서 반복자를 직접 만들어서 풀었다.


풀이 코드

#include <string>
#include <vector>
#include <algorithm>
using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    int student_1[] = {1, 2, 3, 4, 5};
    int student_2[] = {2, 1, 2, 3, 2, 4, 2, 5};
    int student_3[] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
    int std_answers_count[] = {0, 0, 0};
    int std_iterator[] = {-1, -1, -1};

    for(int i=0; i<answers.size(); i++) {
        for(int u=0; u<3; u++) {
            std_iterator[u]++;
        }
        if(std_iterator[0] >= 5) std_iterator[0] = 0;
        if(std_iterator[1] >= 8) std_iterator[1] = 0;
        if(std_iterator[2] >= 10) std_iterator[2] = 0;

        if(answers[i] == student_1[std_iterator[0]]) std_answers_count[0]++;
        if(answers[i] == student_2[std_iterator[1]]) std_answers_count[1]++;
        if(answers[i] == student_3[std_iterator[2]]) std_answers_count[2]++;
    }

    int largest = std_answers_count[0];

    for(int i=0; i<3; i++) {
        largest = max(largest, std_answers_count[i]);
    }

    for(int i=0; i<3; i++) {
        if(std_answers_count[i] == largest) {
            answer.push_back(i+1);
        }
    }

    return answer;
}

 

 

728x90
반응형