HANCO

[백준] 로또 BFS 본문

Algorithm/백준알고리즘

[백준] 로또 BFS

HANCO 2020. 5. 10. 17:54

로또 6603


    //
    // Created by JayPark on 2020/05/10.
    //
    #include "algo.h"

    using namespace std;

    int num;
    bool sel[13];
    vector<int> res;
    vector<int> arr;
    // 재귀를 이용해 문제를 풀것이다.
    void solve(int idx, int cnt){
        // 만약 개수가 6개가 찼다면 그 값을 출력
        if(cnt == 6){
            for(int i=0;i<5;i++){
                cout << res[i] << " ";
            }
            cout << res[5] << '\n';
        }
        // 반복문을 돌려 원하는 값까지 반복한다.(idx가 0부터 시작하기때문에 '< num' 배열)
        for(int k=idx;k<num;k++){
            if(sel[k] == true) continue;
            // 사용한 것을 true
            sel[k] = true;
            // 벡터에 값 저
            res.push_back(arr[k]);로
            // 계속해서 다음을 가리킨다.
            solve(k+1, cnt+1);
            // 사용했다면 다음에도 사용해야하기때문에 false
            sel[k] = false;장
            // 백터에 맨뒤에 사용했던것은 빼준다.
            res.pop_back();
        }
    }
    int main(){
        // 무한루프
        while(1){
            // 초기 숫자 입력
            memset(sel, false, sizeof(sel));
            cin >> num;
            // 입력값이 0이면 프로그램 종료
            if(num == 0) break;

            int input;
            // 입력한 숫자만큼 반복문을 돌려 숫자를 입력 받는다.
            for(int i=0;i<num;i++){
                cin >> input;
                // 벡터에 값을 입력받아 삽입.
                arr.push_back(input);
            }
            // 시작 인덱스는 0번째 개수도 0개로 시작
            solve(0, 0);
            cout << endl;
            // 다음 값 출력을 위해 사용한 벡터들을 초기화한다.
            arr.clear();
            res.clear();

        }
    }

'Algorithm > 백준알고리즘' 카테고리의 다른 글

[백준] 연결요소의 개수  (0) 2020.10.05
[백준] 나이트의 이동 BFS  (2) 2020.05.10
[백준] 영역구하기 DFS  (0) 2020.05.09
[백준] 경로찾기 BFS  (0) 2020.05.09
[백준] 리모컨 [1107]  (0) 2016.12.20