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

이소진·2021년 2월 9일
0

📝문제 포인트

  1. 수포자 1,2,3의 찍는 방식을 벡터에 담아둔다
  2. 반복문을 돌면서 문제를 맞았다면 맞은 개수를 세준다
  3. 제일 많이 맞은 사람을 골라낸다

만약 문제를 맞힌 개수가 4(수포자1), 4(수포자2), 5(수포자3)였다면
문제를 가장 많이 맞힌 사람은 수포자 3이 되는데,
반복문을 처음부터 돌게되면 수포자 1, 2가 answer벡터에 들어갈 것이므로 빼주는 과정도 추가하였다

✍코드

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

vector<int> solution(vector<int> answers) {
    vector<int> num1={1,2,3,4,5};
    vector<int> num2={2, 1, 2, 3, 2, 4, 2, 5};
    vector<int> num3={3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
    int count[4]={0,0,0,0};
    for(int i=0;i<answers.size();i++){
        if(num1[i%num1.size()]==answers[i]) count[1]++;
        if(num2[i%num2.size()]==answers[i]) count[2]++;
        if(num3[i%num3.size()]==answers[i]) count[3]++;
    }
    vector<int> answer;
    int max=count[1];
    for(int i=1;i<=3;i++){
        if(max<count[i]) {
            while(!answer.empty()){
                answer.pop_back();
            }
            answer.push_back(i);
            max=count[i];
        }
        else if(max==count[i]){
            answer.push_back(i);
        } 
    }
    
    return answer;
}

https://programmers.co.kr/learn/courses/30/lessons/42840?language=cpp

profile
webFront / Flutter / iOS 😉

0개의 댓글