PS/프로그래머스

[ 프로그래머스 ] Lv1 완전탐색 : 모의고사 ( C++/C )

발효홍삼 2022. 3. 10. 20:28
728x90
  • 문제

https://programmers.co.kr/learn/courses/30/lessons/42840

 

코딩테스트 연습 - 모의고사

수포자는 수학을 포기한 사람의 준말입니다. 수포자 삼인방은 모의고사에 수학 문제를 전부 찍으려 합니다. 수포자는 1번 문제부터 마지막 문제까지 다음과 같이 찍습니다. 1번 수포자가 찍는

programmers.co.kr


  • 풀이법 ( 알고리즘 )

문제의 크기만큼 반복문을 돌며 수포자 삼인방의 각각 점수를 확인하고 maxScore를 정의해준다. 이후 반복문을 돌며 maxScore와 점수가 같다면 ans 배열에 더해 return한다.


  • 풀이 - C++
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

vector<int> ansOne = {1,2,3,4,5};
vector<int> ansTwo = {2, 1, 2, 3, 2, 4, 2, 5};
vector<int> ansThree = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    int correct[3] = {0,0,0};
    
    for(int i = 0; i < answers.size(); i++)
    {
        if(answers[i] == ansOne[i % 5])correct[0]++;
        if(answers[i] == ansTwo[i % 8])correct[1]++;
        if(answers[i] == ansThree[i % 10])correct[2]++;
        
    }
    int maxScore = max(correct[0], max(correct[1], correct[2]));
    
    for(int i = 0; i < 3; i++)
    {
        if(maxScore == correct[i]) answer.push_back(i+1);
        
    }
    
    return answer;
}
728x90