문제
풀이
#include <string>
#include <vector>
#include <algorithm> //max_element
using namespace std;
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> sum(3,0);
vector<int> first = {1,2,3,4,5};
vector<int> second = {2,1,2,3,2,4,2,5};
vector<int> third = {3,3,1,1,2,2,4,4,5,5};
for(int i=0; i<answers.size(); i++){
//수포자 1
if(answers[i] == first[i%5]) sum[0] ++;
//수포자 2
if(answers[i] == second[i%8]) sum[1]++;
//수포자 3
if(answers[i] == third[i%10]) sum[2]++;
}
int max = *max_element(sum.begin(), sum.end());
for(int i=0;i<3;i++){
if(sum[i] == max) answer.push_back(i+1);
}
return answer;
}
해결 과정
1. 수포자들의 정답을 벡터 배열로 만든다
2. 반복문을 돌려 탐색하며 answers와 수포자의 정답이 맞을 경우 sum벡터 배열 값을 +1 한다.
3. sum의 최댓값을 구하고, 최댓값을 가진 수포자는 모두 asnwer에 push_back 한다.
처음엔 무작정 규칙을 찾아서 비교하는 방법을 생각했으나, 효율성이 너무 좋지 않은 것 같아 수포자의 정답을 백터 배열로 만들어 비교하는 방법을 선택했다.
max_element
-algorithm 라이브러리에 있는 vector의 최댓값을 구해주는 함수
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스]포켓몬 / Set (0) | 2022.01.31 |
---|---|
[프로그래머스]탐욕법 - 체육복 (0) | 2022.01.30 |
[프로그래머스]정렬 - K번째수 (0) | 2022.01.26 |
[프로그래머스] 소수만들기 (0) | 2022.01.25 |
[프로그래머스]내적 & 없는숫자 더하기 / 범용 수치 알고리즘 (0) | 2022.01.24 |