티스토리 뷰

 

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

int one[5] = {1, 2, 3, 4, 5};
int two[8] = {2, 1, 2, 3, 2, 4, 2, 5};
int three[10] = {3, 3, 1, 1, 2, 2, 4, 4, 5, 5};

vector<int> solution(vector<int> answers) {
    vector<int> answer;
    vector<int> cnt(3);
    int i, pos1 = 0, pos2 = 0, pos3 = 0;

    for(i = 0;i<answers.size();i++){
        if(answers[i] == one[pos1]) cnt[0]++;
        if(answers[i] == two[pos2]) cnt[1]++;
        if(answers[i] == three[pos3]) cnt[2]++;
        pos1 = (pos1+1)%5;
        pos2 = (pos2+1)%8;
        pos3 = (pos3+1)%10;
    }
    int max = *max_element(cnt.begin(), cnt.end());
    for(i = 0;i<3;i++){
        if(max == cnt[i]) answer.push_back(i+1);
    }
    return answer;
}

 

새로 배운 것

*max_element(vector.begin(), vector.end())

벡터 내에서 최대값을 구한다.

반복자 iterator : 컨테이너의 원소를 가리킨다.

최대값에 해당하는 반복자를 반환하기 때문에 그 반복자가 가리키는 값을 가져오기 위해서 *를 붙인다.

C에서의 포인터와 달라서 헷갈리지만 유용한 것 같다.

댓글