개발(Dev) 이야기/C++ , Python
[C++] Vector에서 Unique, erase를 활용한 중복순열
이스트버드
2020. 3. 18. 21:48
반응형
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
int main() {
int n, m;
cin >> n >> m; // 4 2
vector <int> buf(n);
for (int i = 0; i < n; i++)
cin >> buf[i]; // 4 4 5 2
sort(buf.begin(), buf.end()); // 2 4 4 5
buf.erase(unique(buf.begin(), buf.end()),buf.end()); // 2 4 5
cout << buf.size() << endl; // 3
for (int i = 0; i < buf.size(); i++) {
cout << buf[i] << ' '; // 2 4 5
}
return 0;
먼저 입력받은 vector를 sort로 오름차순 정렬시킨다.
이후엔 unique 명령으로 vector의 시작과 끝까지 중복을 찾아내는데 이때 제거되지 않는다.
실제로 출력해보게 되면 vector의 중복된 값이 맨 마지막에 위치하는 것을 볼 수 있다.
따라서 erase를 활용하여 적절하게 제거해주면 정상적으로 중복이 제거 된 순열 결과를 얻을 수 있다.
반응형