로또 6603

PublicMinsu·2023년 2월 8일
0

문제

접근 방법

DFS를 통해 번호를 선택해주고 6개를 다 고르면 출력해준 뒤 빠져나가는 식으로 해결하면 된다.

코드

#include <iostream>
using namespace std;
int num[13], k, buff[13];
void dfs(int idx, int cnt)
{
    if (cnt == 6)
    {
        for (int i = 0; i < 6; ++i)
            cout << buff[i] << " ";
        cout << "\n";
        return;
    }
    if (idx == k)
        return;
    buff[cnt] = num[idx];
    dfs(idx + 1, cnt + 1);
    buff[cnt] = 0;
    dfs(idx + 1, cnt);
}
int main()
{
    ios_base::sync_with_stdio(0), cin.tie(0);
    while (true)
    {
        cin >> k;
        if (k == 0)
            break;
        for (int i = 0; i < k; ++i)
            cin >> num[i];
        dfs(0, 0);
        cout << "\n";
        for (int i = 0; i < k; ++i)
            num[i] = 0;
    }
    return 0;
}

풀이

테스트 케이스 사이에 빈 줄을 잊지 말자.
cout.tie는 기본적으로 NULL이기에 안 해주어도 된다는 것을 알게 됐다.
6개를 골랐는지 확인하고 출력하고 반환해주고 끝까지 도달한 경우에도 반환해주면 된다.

profile
연락 : publicminsu@naver.com

0개의 댓글