문제풀이(Problem Solving)

백준, BOJ, 6603번, 로또 C++ [CPP] ★★

게임이 더 좋아 2022. 6. 14. 08:58
반응형
728x170

 

쉬운 문제다.

백트래킹의 전형적인 형태를 보여준다.

 

 

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

 


 

#맞은 풀이

#include <bits/stdc++.h>

using namespace std;

vector<int> vec;

//6개 뽑으면 종료 => 조건 사전순, 조합, 현재까지 뽑은 결과
void func(int cnt, vector<int> result, int cur){
    if(cnt == 6){
        for(auto c : result){
            cout << c << " ";
        }
        cout << '\n';
        return;
    }
    
    for(int i = 0; i<vec.size(); i++){
        if(vec[i] <= cur)continue;
        result.push_back(vec[i]);
        func(cnt+1, result, vec[i]);
        result.pop_back();
    }
}

int main(){
    while(1){
        int x;
        cin >> x;
        if(x == 0)break;
        for(int i = 0; i<x; i++){
            int n;
            cin >> n;
            vec.push_back(n);
        }
        sort(vec.begin(), vec.end());
        vector<int> res;
        func(0, res, -1);
        
        //초기화 시켜줘야 재활용가능
        vec.clear();
        cout << '\n';
    }
    
    return 0;
}
728x90
반응형
그리드형