[개념공부]순열 : next_permutation

GomHyeok·2023년 2월 9일
0

📒next_permutation

✍next_permutation 이란?

순열 : 서로다른 n개의 원소를 한 줄로 세우는 경우의 수. -> 순서가 다르면 다른 것으로 생각한다. <--> 조합은 순서가 달라도 원소가 같다면 같으 것으로 생각한다.
next_permutation : 현재 나와 있는 순열에서 범위에 해당하는 다음 순열을 구하고 true를 반환한다. 다음 순열이 없다면(다음 순열이 이전 순열보다 작다면) false를 반환한다.

✍특징

📌특징

  • 개념에 기초하여 정열이 되어 있어야 한다는 조건이 있다.(오름차순 정렬)
    - sort를 활용한 정렬 ex) sort(arr.begin(), arr.end())
  • bool type을 반환하지만 해당 순열의 순서 또한 변화시킨다.
    - 원소를 담고 있는 컨테이너의 원소 순서 달라짐

📌헤더파일

#include < algorithm>

✍사용방법

📌반복문

  • 원하는 조건의 순열을 찾거나 모든 순열을 확인하기 위해서 do-while문을 자주 사용한다.
  • 반복문의 조건으로 next_permutation 사용(bool type return)

📌예시 코드

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

using namespace std;

int main()
{
    vector<int> v (3);
    v[0] = (5);
    v[1] = (3);
    v[2] = (6);
    
    sort(v.begin(), v.end())
    
    do {
        for (auto i : v)
        {
            cout << i << " ";
        }
		cout<<endl;
    } while (next_permutation(v.begin(), v.end()));
}

출력결과 :
3 5 6
3 6 5
5 3 6
5 6 3
6 3 5
6 5 3


📌정렬의 필요성

만약 정렬을 하지 않을 경우 (위의 예시에서 sort문이 제외될 경우) 모든 경우를 확인할 수 없다.

  • 초기 vector {5, 3, 6}

출력결과 :
5 3 6
5 6 3
6 3 5
6 5 3

  • 다음 순열 (3 5 6)이 이전 순열보다 작기 때문에 false를 return 하기 때문이다.

profile
github : https://github.com/GomHyeok/

0개의 댓글

관련 채용 정보