▶문제설명
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
'■ C++ > STL 알고리즘' 카테고리의 다른 글
대소문자를 구분하지 않는다는 조건에 대하여 (대/소문자 변경) (0) | 2020.04.23 |
---|---|
[STL 알고리즘] sort - 구조체 정렬 (0) | 2019.12.18 |
[C++] STL vector를 활용한 배열 동적 할당 (0) | 2019.03.26 |