• 완전 탐색 알고리즘 문제 : 프로그래머스 LEVEL 1(모의고사) image - 사용 언어 : C++ - 해결 날짜 : 2021-01-11

    **- 해결 방법** :
    
        각각의 수포자들이 문제를 맞출 때 마다 그 수를 증가시키기 위해 a,b,c 라는 int형 변수를 선언하였다.
    
        첫 수포자의 경우 5로 나누었을 때 나머지에 1을 더한 값과 일치하면 답을 맞춘 것이고,
    
        두 번째 수포자의 경우 짝수 번째 일 경우는 2일 때, 홀수 번째 일 경우는 8로 나누었을 때 나머지가 1,3,5,7인 경우에 각각 답이 1,3,4,5 이면 답을 맞춘 것이고,
    
        세 번째 수포자의 경우 10으로 나누었을 때 나머지가 0,1일 경우 답이 3이면, 나머지가 2,3일 경우 답이 1이면, 나머지가 4,5일 경우 답이 2면, 나머지가 6,7일 경우 답이 4면, 그 외의 경우 답이 5면 답을 맞춘 것이다.
    
        이렇게 각각의 정답을 맞춘 횟수를 answer vector에 저장한 다음 compare 함수를 사용하여 최대 값을 찾아 최대 값을 갖는 인덱스를 반환하여 문제를 해결하였다.
    
    - 코드
    
    ```
    #include <string>
    #include <vector>
    #include <algorithm>
    
    using namespace std;
    vector<int> compare(vector<int> compare) {
        vector<int> answer;
        int max = *max_element(compare.begin(), compare.end()); //최대 값 찾기
    
        for (int i = 0; i < compare.size(); i++) {
            if (compare[i] == max) answer.push_back(i+1); //최대 값을 갖는 인덱스 찾기
        }
    
        return answer;
    }
    
    vector<int> solution(vector<int> answers) {
        vector<int> answer;
    
        int a = 0;
        int b = 0;
        int c = 0;
        for (int i = 0; i < answers.size(); i++) {
            //첫 수포자
            if (((i % 5) + 1) == answers[i]) {
                a++;
            }
    
            //두 번째 수포자
            if (i % 2 == 0) {
                if (answers[i] == 2) b++;
            }
            else if(i % 2 == 1) {
                if (i % 8 == 1 && answers[i] == 1) b++;
                else if (i % 8 == 3 && answers[i] == 3) b++;
                else if (i % 8 == 5 && answers[i] == 4) b++;
                else if (i % 8 == 7 && answers[i] == 5) b++;
            }
    
            //세 번째 수포자
            if (i % 10 == 0 || i % 10 == 1) {
                if (answers[i] == 3) c++;
            }
            else if (i % 10 == 2 || i % 10 == 3) {
                if (answers[i] == 1) c++;
            }
            else if (i % 10 == 4 || i % 10 == 5) {
                if (answers[i] == 2) c++;
            }
            else if (i % 10 == 6 || i % 10 == 7) {
                if (answers[i] == 4) c++;
            }
            else {
                if (answers[i] == 5) c++;
            }
        }
    
        answer.push_back(a);
        answer.push_back(b);
        answer.push_back(c);
        answer = compare(answer);
    
        return answer;
    }
    ```