티스토리 뷰

백준/실버

[백준 6603번] 로또 (C++)

게임개발기원 2025. 3. 21. 01:38

문제링크 : https://www.acmicpc.net/problem/6603

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

int k, arr[13], ans[6];
void dfs(int s, int idx)
{
    if(idx == 6)
    {
        for(int i=0; i<6; i++) cout << ans[i] << " ";
        cout << "\n";
        return;
    }
    
    for(int i=s; i<k; i++)
    {
        ans[idx] = arr[i];
        dfs(i+1, idx+1);
    }
}

int main(void)
{
    ios_base::sync_with_stdio(false);
    cin.tie(0);

    while(cin >> k)
    {
        if(k==0) break;
        for(int i=0; i<k; i++) cin >> arr[i];
        dfs(0, 0);
        cout << "\n";
    }
    

    return 0;
}

 

백트래킹을 활용한 문제이다.

시작점과 현재 인덱스를 같이 넘기고, 인덱스가 6이 되는 순간을 체크하여 저장된 배열 값들을 출력해준다.

배열 값 저장 같은 경우 기존에 입력받은 값들을 idx 값에 따라 정답 배열에 저장해준다.

이때 시작점을 주의하여야 한다.

'백준 > 실버' 카테고리의 다른 글

[백준 2485번] 가로수 (C++)  (0) 2025.03.27
[백준 1735번] 분수 합 (C++)  (0) 2025.03.27
[백준 2529번] 부등호 (C++)  (0) 2025.03.10
[백준 10971번] 외판원 순회 2 (C++)  (0) 2025.03.08
[백준 10974번] 모든 순열 (C++)  (0) 2025.03.07
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/06   »
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
글 보관함