본문 바로가기
  • 실행력이 모든걸 결정한다
Algorithm/Brute force

[완전탐색, 난이도 하] 프로그래머즈, 모의고사

by 김코더 김주역 2020. 9. 24.
반응형

세 학생의 문제를 찍는 주기를 파악해야 하는 문제이다.

1번 수포자는 (1,2,3,4,5) 를 반복하여 찍고,

2번 수포자는 (2,1,2,3,2,4,2,5) 를 반복하여 찍고,

3번 수포자는 (3,3,1,1,2,2,4,4,5,5) 를 반복하여 찍는다.

주기는 각각 5,8,10 이다.

 

시험은 총 answers.size() 문제가 있고, %(나머지 연산자)를 이용하여 주기 사이클을 돌려가며 답과 비교하면 된다. 

 

테스트 케이스 14개 모두 통과

 

#include <vector>
using namespace std;

int maxi(int a,int b){
    if(a>b) return a;
    else return b;
}
int select_group1[5] = {1,2,3,4,5};
int select_group2[8] = {2,1,2,3,2,4,2,5};
int select_group3[10] = {3,3,1,1,2,2,4,4,5,5};
int score[3];
vector<int> solution(vector<int> answers) {
    vector<int> answer;
    for(int i=0;i<answers.size();i++){
        if(answers[i]==select_group1[i%5]) score[0]++;
        if(answers[i]==select_group2[i%8]) score[1]++;
        if(answers[i]==select_group3[i%10]) score[2]++;
    }
    int max = maxi(maxi(score[0],score[1]),score[2]);
    for(int i=0;i<3;i++) if(score[i]==max) answer.push_back(i+1);
    return answer;
}
반응형

댓글