반응형
#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를 활용하여 적절하게 제거해주면 정상적으로 중복이 제거 된 순열 결과를 얻을 수 있다.
반응형
'개발(Dev) 이야기 > C++ , Python' 카테고리의 다른 글
[C++] STL Queue 사용법 (0) | 2020.03.26 |
---|---|
[C++] 동적으로 2차원 배열 할당하기 - vector편 (0) | 2020.03.25 |
[C++] pair, vector (0) | 2020.03.08 |
[C++] 동적으로 2차원 배열 할당 및 해제하기 (0) | 2020.03.08 |
[C++] 순열 정렬방법 (next_permutation, prev_permutation) (0) | 2020.03.08 |