문제 출처

1. 문제설명


  • 문제 설명은 매우 장황하지만
  • N개의 수가 주어졌을 때, 모든 조합을 구하는 것이다.



2. 알고리즘 설계


  • 오름차순이므로, 1부터 시작하다가 6개가 카운팅되면
  • 출력해주면 된다.



3. 로직


  • DFS 방식을 이용해 구현하였다.
  • 배열 6칸에 값을 순차적으로 채우면서,
  • 카운팅과 현재 인덱스를 갱신시켜준다.



4. 전체 코드


#include <bits/stdc++.h>
using namespace std;

int n, lotto[14], ans[6];

void dfs(int start, int depth) {
    if (depth == 6) {
        for (int i = 0; i < 6; i++)
            cout << ans[i] << ' ';
        cout << '\n';
        return;
    }

    for (int i = start; i < n; i++) {
        ans[depth] = lotto[i];
        dfs(i + 1, depth + 1);
    }
}

int main(void) 
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);

    while (cin >> n && n) {
        for (int i = 0; i < n; i++)
            cin >> lotto[i];

        dfs(0, 0);
        cout << '\n';
    }
    
    return 0;
}