반응형
728x170
어렵진 않다만
그냥 여러가지 해줘야 해서 귀찮았다.
https://programmers.co.kr/learn/courses/30/lessons/42840?language=cpp
#맞는 풀이
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int c1[5] = {1,2,3,4,5};
int c2[8] = {2,1,2,3,2,4,2,5};
int c3[10] = {3,3,1,1,2,2,4,4,5,5};
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> score;
int cnt1 =0;
int cnt2 =0;
int cnt3 =0;
int max = 0;
for(int i = 0; i<answers.size(); i++){
int x1 = i%5;
int x2 = i%8;
int x3 = i%10;
if(c1[x1] == answers[i])cnt1++;
if(c2[x2] == answers[i])cnt2++;
if(c3[x3] == answers[i])cnt3++;
if(max <= cnt1) max = cnt1;
if(max <= cnt2) max = cnt2;
if(max <= cnt3) max = cnt3;
}
score.push_back(cnt1);
score.push_back(cnt2);
score.push_back(cnt3);
for(int i = 0; i<3; i++){
if(score[i] == max){
answer.push_back(i+1);
}
}
sort(answer.begin(), answer.end());
return answer;
}
#다른 사람풀이
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
vector<int> one = {1,2,3,4,5};
vector<int> two = {2,1,2,3,2,4,2,5};
vector<int> thr = {3,3,1,1,2,2,4,4,5,5};
vector<int> solution(vector<int> answers) {
vector<int> answer;
vector<int> they(3);
for(int i=0; i<answers.size(); i++) {
if(answers[i] == one[i%one.size()]) they[0]++;
if(answers[i] == two[i%two.size()]) they[1]++;
if(answers[i] == thr[i%thr.size()]) they[2]++;
}
int they_max = *max_element(they.begin(),they.end());
for(int i = 0; i< 3; i++) {
if(they[i] == they_max) answer.push_back(i+1);
}
return answer;
}
나랑 비슷하게 풀었다.
다만 max를 실시간으로 갱신한 나와 달리
계산후 max_element의 iterator를 얻어서 *을 붙여 해당 값을 얻은 뒤 계산했다는게 나와 다르다.
728x90
반응형
그리드형
'문제풀이(Problem Solving)' 카테고리의 다른 글
프로그래머스, 폰켓몬 : C++ [CPP] (0) | 2021.11.09 |
---|---|
프로그래머스, 체육복 : C++ [CPP] (0) | 2021.11.07 |
프로그래머스, 완주하지 못한 선수 : C++ [CPP] (0) | 2021.11.07 |
프로그래머스, 카카오프렌즈 컬러링북 : C++ [CPP] (0) | 2021.11.05 |
프로그래머스, 숫자 문자열과 영단어 : C++ [CPP] (0) | 2021.11.05 |