[HackerRank/C++] ACM ICPC Team

2023. 2. 7. 07:50코딩테스트 해커랭크/Algorithms -Easy

topic은 string으로 각각 문제중 자신이 알고 있는 문제를 1로 표시하고 모르는 경우 0으로 표시하는 사람들이 있다

 

이 중 2명으로 팀을 꾸리고 가장 많은 문제를 알고 있는 팀이 만들어질때

 

해당 팀이 알고 있는 문제의 수와 그런 팀이 조합될 경우의 수를 return 한다

vector<int> acmTeam(vector<string> topic)
{
    vector<int> result;
    
    int max = 0;
    int team = 0;
    
    for (int i = 0; i < topic.size(); ++i)
    {
        for (int j = i + 1; j < topic.size(); ++j)
        {
            int tempMax = 0;
            
            for (int k = 0; k < topic[i].length(); ++k)
                if (topic[i][k] == '1' || topic[j][k] == '1')
                    ++tempMax;
            
            if (tempMax > max)
            {
                max = tempMax;
                team = 1;
            }
            else if(tempMax == max)
                ++team;
        }
    }
    
    result.push_back(max);
    result.push_back(team);
    
    return result;
}

반환할 result와 최대 문제수를 저장할 max, 가능한 조합수를 저장할 team 변수를 선언한다

 

반복문을 돌며 2명의 팀을 꾸릴때 가능한 모든 경우의 수를 체크한다

 

경우의 수를 체크하며 아는 문제 수의 최댓값이 갱신 될 경우 max에 저장하며 team의 수를 1로 초기화 한다

 

만약 현재 팀이 아는 문제수와 현재 갱신된 최대 문제수가 같다면 team을 증가시킨다

 

모든 반복이 끝나면 result에 max값과 team값을 push_back해 return 한다