문제풀이(Problem Solving)

프로그래머스, 모의고사 : C++ [CPP]

게임이 더 좋아 2021. 11. 7. 18:41
반응형
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
반응형
그리드형