코딩테스트 준비

조합과 순열 만들기 in C++

SeoburiFaust 2024. 3. 14. 16:51

 

 

c++ STL에서 제공해주는 <algorithm> 헤더 안에는 next_permutation 함수가 있다.

다른 언어에는 없다고 한다. c++유저들의 특권인 셈이다.

 

이를 잘 이용하면 조합과 순열을 편하게 만들 수 있다.

 

아래 코드를 참고하자.

1,2,3,4,5를 이용해 next_permutation으로 순열을 만들 수도 있고,

이 5개의 원소중 3개를 순서상관없이 뽑고싶다면,  prev_permutation과 temp = {1, 1, 1, 0, 0} 배열을 적절히 이용하면 된다.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;


int main() {
    vector<int> arr = {1, 2, 3, 4, 5};
    vector<int> temp = {1, 1, 1, 0, 0};
    do {
        for (int i=0;i<temp.size();i++) {
            if (temp[i] == 1) cout << arr[i] << " ";
        } 
        cout << endl;
    }while(prev_permutation(temp.begin(), temp.end()));

    return 0;
}

 

야호!