반응형
세 학생의 문제를 찍는 주기를 파악해야 하는 문제이다.
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;
}
반응형
'Algorithm > Brute force' 카테고리의 다른 글
[완전탐색] 후보키 - 2019 KAKAO BLIND RECRUITMENT (0) | 2022.06.24 |
---|---|
완전탐색 고득점 kit 풀이 완료, 후기 (0) | 2020.09.24 |
next_permutation을 이용한 조합 구현 (0) | 2020.09.23 |
[완전탐색, 난이도 중] 프로그래머즈, 소수 찾기 (0) | 2020.09.22 |
재귀를 이용한 간단한 순열 알고리즘 (0) | 2020.09.22 |
댓글