c++
순열이랑 벡터의 erase랑 unique.
E재HO
2022. 2. 17. 20:06
순열: permutation
N개의 원소에서 R개를 뽑아서 나열하는 것.
조합이 같더라도 순서가 다르면 OK
C++ algorithm헤더에 next_permutation이라는 함수가 들어 있음.
사용법은
기본 : next_permutation(시작itorator,종료itorator);
사용자 정의에 따라 : next_permutation(시작itorator,종료itorator,cmp);
주의 사항
-사전에 오름차순으로 정렬해둬야 동작한다.
-오름 차순으로 순열을 생성한다.
-중복은 알아서 지워준다.
이런식으로 쓰인다.
1-2-3-4의 배열이 있다고 가정을 하면 next_permutation의 함수를 사용하면 배열의 값들이 다음 순열인1-2-4-3로 바뀌고 함수는 true를 반환.
erase는 벡터에서 특정 원소들을 삭제해 주는 것이고
unique는 배열을 유니크하게 정렬해주고 유니크하지 않은 부분의 itorator를 뱉어준다.
그래서
nums.erase(unique(nums.begin(), nums.end()), nums.end());
이렇게 사용하는게 국룰이라고 볼 수 있다.