영벨롭 개발 일지

[C++]순열 next_permutation STL 사용하기 본문

Programming Language/C & C++

[C++]순열 next_permutation STL 사용하기

영벨롭 2022. 3. 31. 15:35

 

 순열(permutation)은 서로 다른 n개의 원소에서 r개를 뽑아 한 줄로 세우는 경우의 수를 표현할 수 있습니다.

 

 C++ STL을 사용하여 순열을 쉽게 표현할 수 있습니다.

 

 헤더파일

#include<algorithm)

 

 

기본형

bool next_permutation(BidirectionalIterator first, BidirectionalIterator last);

bool next_permutation(BidirectionalIterator first, BidirectionalIterator last, Compare com);
  • 인자: 컨테이너(배열)의 시작과 끝 iterator
  • true: 다음 순열이 존재하면 컨테이너의 원소들을 해당 순열로 바꾼 뒤 true 반환
  • false: 다음 순열이 존재하지 않는다면 false 반환
  • 비교함수 직접 작성 가능

 

 

주의점

  • 컨테이너는 오름차순으로 정렬되어 있어야 합니다. 
  • 순열의 순서는 default로 오름차순으로 생성됩니다. 
  • 컨테이너 내의 중복 원소는 제외하고 순열을 생성합니다. 

 

 

예제

 예제로 {1, 2, 3, 4} 배열의 순열을 출력해보겠습니다. 

#include<iostream>
#include<algorithm>
#include<array>

using namespace std;

int main(void) {
	array<int, 4> arr = { 1, 2, 3, 4 };

	sort(arr.begin(), arr.end());

	do {
		for (auto element : arr)
			cout << element << " ";
		cout << endl;
	} while (next_permutation(arr.begin(), arr.end()));

	return 0;
}

반응형