문제

로또 백준 6603번


리뷰

next_permutation 으로 모든 순열을 구해서 풀었다.

k 개 중에 반드시 6개만 선택해서 가능한 순열을 전부 출력한다.

k는 최대 50이고, 주어진 k 중에 처음에는 0 으로 6개 뽑을 것을 표시하고 , 나머지들은 선택 안할거니까 1로 표시한다.

next_permutation 으로 순열을 출력하는데, 0으로 뽑힌것만 출력한다.


코드

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

void lotto(vector<int> &A, int N){

    int ch[50] = {0, }; 

    // 6부터 나머지는 1 
    for(int i = 6; i < N ; i++){
        ch[i] = 1;
    }

    do{

        for(int i = 0; i < N; i++){
            if(!ch[i]) cout << A[i] << ' ';
        }
        cout << '\n';
    }while(next_permutation(ch, ch+N));

    cout << '\n';

    return;
}

int main(void){

    int k = 1;
    int N = 0;
    vector<int> A;

    while(1){

        scanf("%d", &N);
        if(N == 0) break;

        for(int i = 0; i < N; i++){
            int num = 0;
            cin >> num;
            A.push_back(num);
        }

        lotto(A, N);
        A.clear();
    } 

    return 0;    
}
728x90

'알고리즘 > 백준' 카테고리의 다른 글

ABCDE 백준 13023 c++  (0) 2020.09.06
연결 요소의 개수 백준 11724 BFS  (0) 2020.09.06
퇴사 백준 14501  (0) 2020.09.03
차이를 최대로 백준 10819번 c++  (0) 2020.09.03
날짜계산 백준 1476번  (0) 2020.09.03

+ Recent posts