[C++] 프로그래머스 : 모의고사

Kim Nahyeong·2022년 4월 8일
0

프로그래머스

목록 보기
5/38

#include <string>
#include <vector>
#include <algorithm> //sort

using namespace std;

int onePick[5] = {1, 2, 3, 4, 5};
int twoPick[8] = {2, 1, 2, 3, 2, 4, 2, 5};
int threePick[10] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    
    int one = 0;
    int two = 0;
    int three = 0;
    
    for(int i = 0; i < answers.size(); i++){
        if(onePick[i % 5] == answers[i]){
            one++;
        }
        if(twoPick[i % 8] == answers[i]){
            two++;
        }
        if(threePick[i % 10] == answers[i]){
            three++;
        }
    }
    
    int mmax = max(one, max(two, three));
    if(mmax == one){
        answer.push_back(1); // vector는 push_back
    }
    if(mmax == two){
        answer.push_back(2);
    }
    if(mmax == three){
        answer.push_back(3);
    }
    
    sort(answer.begin(), answer.end()); // 오름차순
    
    return answer;
}
  • 모든 학생마다 고유한 찍는 패턴을 가지고 있다. 따라서 해당 찍는 방식을 배열로 만들어 원형으로 탐색(나머지 % 이용)하도록 하였고 만약 정답인 경우 맞춘 값을 세도록하였다.

  • 최대 맞춘 경우를 구하고 (max) 최대 경우를 갖는 경우 정답 vector에 넣어 정렬한 후 출력시켰다.

0개의 댓글