Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- 컴퓨터공학 #c #c언어 #문자열입력
- 컴퓨터공학 #자료구조 #스택 #c++ #알고리즘 #백준문제풀이
- HTML #CSS
- 잔
- 컴퓨터공학 #Java #자바 #클래스 #객체 #인스턴스
- BOJ #컴퓨터공학 #C++ #알고리즘 #자료구조
Archives
- Today
- Total
영벨롭 개발 일지
[C++]순열 next_permutation STL 사용하기 본문
순열(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;
}
반응형
'Programming Language > C & C++' 카테고리의 다른 글
[C++]이분 탐색 lower_bound & upper_bound 사용하기 (0) | 2022.05.06 |
---|---|
[C++]STL 해시 테이블 unordered_set과 unordered_map (0) | 2022.04.26 |
[C++]std::array 클래스 사용법 (0) | 2022.03.29 |
[C++]system() 함수 - 몇 가지 명령어 사용해보기 (0) | 2022.03.06 |
[C++] string 라이브러리 사용법 (0) | 2022.02.21 |