코딩 테스트 준비! (백준)/DFS

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

lee-soo 2025. 4. 10. 12:38

https://www.acmicpc.net/problem/6603

 

자~ 독일 로또를 가져왔다

이제 순열을 주구장창 풀어봤다면

딱봐도 아하 순열문제구나?

그럼 이제 

아하? 우리가 풀던데로 풀면 되겠구나?

 

 

그럼 너무쉽구나?

 

#include <iostream>
#include <cmath>
#include <algorithm>
#include <vector>
using namespace std;
bool visited[10];
long arr[49];
vector<int> v;
void task(int n, int depth);
int main()
{
    int n = 1;

    while (n != 0)
    {
        cin >> n;
        for (int i = 0; i < n; i++)
        {
            cin >> arr[i];
        }

        task(n, 0);
        cout << "\n";
    }
}
void task(int n, int depth)
{

    if (depth == 6)
    {
        for (int i = 0; i < 6; i++)
            cout << v[i] << " ";
        cout << "\n";
        return;
    }
    for (int i = 0; i < n; i++)
    {
        if (!visited[i] && (v.empty() || v.back() < arr[i]))
        {
            visited[i] = true;
            v.push_back(arr[i]);
            task(n, depth + 1);
            v.pop_back();
            visited[i] = false;
        }
    }
}
 
 
배열에 로또 번호를 담고
모든 순열을 확인하면 되네?
하지만 오름차순으로 가야되니까
  if (!visited[i] && (v.empty() || v.back() < arr[i]))
중복된 숫자 x , 오름차순
 
 
 
 

https://lee-soo.tistory.com/18

 

[DFS] 백준 15652번 N과 M (4,5,6) (C++)

https://www.acmicpc.net/problem/15652 해당 문제를 풀기전 1,2,3을 풀고오길 바란다https://lee-soo.tistory.com/17 [DFS] 백준 15649번 N과 M (1,2,3) (C++)https://www.acmicpc.net/problem/15649 이 문제를 풀면서 나에게도 큰 시

lee-soo.tistory.com

이해가 안된다면 앞선 문제들을 풀고와라