SW/알고리즘

C++ : 프로그래머스 : 모의고사: 풀이

얇은생각 2019. 5. 27. 12:30
반응형

풀이


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

int tester1[5] = {1,2,3,4,5};
int tester2[8] = {2,1,2,3,2,4,2,5};
int tester3[10] = {3,3,1,1,2,2,4,4,5,5};

int max(int a, int b){
return a < b ? b : a;
}


vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> score(3);
int maxScore = 0;
for(int i=0; i < answers.size(); i++){
if(tester1[i % 5] == answers[i]) score[0]++;
if(tester2[i % 8] == answers[i]) score[1]++;
if(tester3[i % 10] == answers[i]) score[2]++;
}

maxScore = max(max(score[0],score[1]),score[2]);
for (int i=0; i<3; i++){
if(score[i] == maxScore) answer.push_back(i+1);
}
return answer;
}



채점 결과

정확성 테스트
테스트 1 통과 (0.01ms, 3.82MB)
테스트 2 통과 (0.01ms, 3.77MB)
테스트 3 통과 (0.00ms, 3.75MB)
테스트 4 통과 (0.00ms, 3.75MB)
테스트 5 통과 (0.01ms, 3.88MB)
테스트 6 통과 (0.00ms, 3.88MB)
테스트 7 통과 (0.05ms, 3.96MB)
테스트 8 통과 (0.02ms, 3.75MB)
테스트 9 통과 (0.09ms, 3.91MB)
테스트 10 통과 (0.05ms, 3.85MB)
테스트 11 통과 (0.09ms, 4.01MB)
테스트 12 통과 (0.09ms, 3.88MB)
테스트 13 통과 (0.02ms, 3.78MB)
테스트 14 통과 (0.05ms, 3.91MB)
채점 결과
정확성: 100.0
합계: 100.0 / 100.0


총평

먼저 찍는 방식을 정의해놓았습니다. 그 후 5, 8, 10 번째마다 찍는 방식과 정답을 비교합니다. 그리고 같은 경우에 해당 score을 1씩 더해줍니다. 그 후 max 함수를 정의하여 최대값을 얻어 maxScore에 초기화합니다. 그 후, 최대값과 동일한 경우에 해당하는 수포자만 push 해준 뒤 반환합니다. 

반응형