본문 바로가기

■ C++/STL 알고리즘

[C++] next_permutation()을 활용한 조합 생성

▶문제설명

1부터 6까지의 중복되지 않은 숫자들이 있다.

6개의 숫자 중 3개를 뽑아내는 모든 경우의 수를 출력하라.



▶Hint


STL을 활용하여 쉽게 해결할 수 있다.

#include<algorithm>


next_permutation( *.begin(), *.end() ) );

next_permutation( 배열의 시작 주소, 배열의 끝 주소+1 ) );



next_permutation()은

vector나 array의 시작주소, 끝주소를 매개변수로 받아서 

vector(array)의 원소를 교환하여 순열을 만들어 주고 true를 반환하며

마지막 순열 생성 후 false를 반환한다.



같은 크기의 다른 배열을 생성하고 0으로 초기화 한 후에,

골라 낼 원소의 개수만큼 뒤에서부터 원소를 1로 변경하여 

그 배열로 순열을 생성하고, 이를 활용하면 쉽게 조합 생성이 가능하다.



prev_permutation()은 반대로 동작하므로

앞에서부터 1로 변경하면 된다.



▶Solution



[소스 코드 보기]