문제 풀이
수포자 각각이 찍는 방식의 주기를 파악하면 된다.
수포자1의 주기는 5,
수포자2의 주기는 8,
수포자3의 주기는 10이고
입력 받은 모든 정답을 처음부터 탐색하면서 수포자 각각의 답안과 비교하면 된다.
코드(C++)
#include <string>
#include <vector>
#include <algorithm> // max
using namespace std;
int person1[5] = {1, 2, 3, 4, 5};
int person2[8] = {2, 1, 2, 3, 2, 4, 2, 5};
int person3[10] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> tester(3); // 크기를 설정해주면 전부 0으로 초기화됨
int maxScore = 0;
for(int i = 0 ; i < answers.size() ; i++) {
if(answers[i] == person1[i % 5]) tester[0]++;
if(answers[i] == person2[i % 8]) tester[1]++;
if(answers[i] == person3[i % 10]) tester[2]++;
}
maxScore = max(max(tester[0], tester[1]), tester[2]);
// 1번 수포자부터 탐색 -> 자동 오름차순
for(int i = 0 ; i < 3 ; i++) {
if(tester[i] == maxScore) {
answer.push_back(i+1);
}
}
return answer;
}
반응형
'프로그래머스 > 브루트포스' 카테고리의 다른 글
2021 KAKAO BLIND RECRUITMENT 순위 검색(C++) (0) | 2022.09.22 |
---|---|
2021 KAKAO BLIND RECRUITMENT 메뉴 리뉴얼(C++) (0) | 2022.09.22 |
[2020 카카오공채] 문자열 압축 (0) | 2020.02.11 |