[BOJ] 6603 로또 C++

문제

코드

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
    while(true){
    int n;
    cin>>n;
    if(n==0)
        break;
    vector<int> a(n);
    for(int i = 0 ; i < n ; i++)
    {
        cin>>a[i];
    }
    vector<int> d;
    for(int i=0;i< n -6 ; i++)
    {
        d.push_back(0 );
    }
    for(int i=0;i<6;i++)
    {
        d.push_back(1);
    }
    vector<vector<int>> ans;
    do{
        vector<int> current;
        for(int i=0;i<n;i++)
        {
            if(d[i]==1)
            {
                current.push_back(a[i]);
            }
        }
        ans.push_back(current);
    } while(next_permutation(d.begin(),d.end()));
 	sort(ans.begin(),ans.end());
    for(int i= 0 ; i< ans.size();i++)
    {
        for(int j=0;j<6;j++)
        {
            cout<<ans[i][j]<<" ";
        }
        cout<<endl;
    }
    cout<<endl;
    }
}

풀이

n개의 번호에서 6개를 중복없이 선택해야하기 때문에 새로운 vector를 만들어 n-6개의 0과 6개의 1을 넣어줌, 새로운 vector를 순열(next_permutation)를 이용

좋은 웹페이지 즐겨찾기