PS/프로그래머스

[프로그래머스] 모의고사

uyt8989 2021. 12. 30. 15:10

백준만 풀기 섭섭해서 프로그래머스도 한문제 풀어봤다.

날먹하려고 가장 만만한 브루트포스로 풀었다.

근데 벡터 사용이 어색해서 좀 버벅였다...ㅋ

문제 자체는 아주 쉬웠다.

 

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    
    int score[3] = {0, };
    int idx[3] = {0, };
    const int giver1[5] = {1, 2, 3, 4, 5};
    const int giver2[8] = {2, 1, 2, 3, 2, 4, 2, 5};
    const int giver3[10] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};
    
    for(int i = 0; i < answers.size(); i++){
        if(answers[i] == giver1[idx[0]++]) score[0]++;
        if(answers[i] == giver2[idx[1]++]) score[1]++;
        if(answers[i] == giver3[idx[2]++]) score[2]++;
        
        idx[0] = idx[0] % 5;
        idx[1] = idx[1] % 8;
        idx[2] = idx[2] % 10;
    }
    
    int m = max(score[0], score[1]);
    m = max(m, score[2]);
    
    for(int i = 0; i < 3; i++)
        if(m == score[i]) answer.push_back(i+1);
    
    return answer;
}

 

후기)

벡터는 신이다. std::max_element() 라는게 있는 모양임.

더 깔끔하게 구할 수도 있었다.