티스토리 뷰

#include <string>
#include <vector>

using namespace std;

int solution(int n, vector<vector<int>> q, vector<int> ans) {
    int answer = 0;
    
    for(int a=1; a<=n-4; a++)
    {
        for(int b=a+1; b<=n-3; b++)
        {
            for(int c=b+1; c<=n-2; c++)
            {
                for(int d=c+1; d<=n-1; d++)
                {
                    for(int e=d+1; e<=n; e++)
                    {
                        vector<int>tmp = {a, b, c, d, e};
                        bool check = 1;
                        
                        for(int i=0; i<q.size(); i++)
                        {
                            int cnt = 0;
                            for(auto j : tmp)
                            {
                                for(auto k : q[i])
                                {
                                    if(j == k)
                                    {
                                        cnt++; //겹치는 경우 카운트
                                        break;
                                    }
                                }
                            }
                            
                            if(cnt != ans[i]) //요구 카운트와 다르면 패스
                            {
                                check = 0;
                                break;
                            }
                        }
                        if(check) answer++;
                    }
                }
            }
        }
    }
    
    return answer;
}

 

수의 범위가 크지 않아, 브루트포스로도 해결이 가능하다.

오름차순 정렬이기에 5중 반복문을 통해 각기 다른 값을 저장하여 q의 값들과 비교가 가능하다.

비교를 통해 겹치는 경우를 카운트해주고, 해당 카운트가 요구 카운트와 다르다면 패스하고 맞다면 최종 정답 카운트를 증가시킨다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함