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());

이렇게 사용하는게 국룰이라고 볼 수 있다.