반응형
C++ vector에 중복된 인자 제거하기 - 백준 알고리즘 오답노트 1181
중복된 값 제거는 #include<algorithm> 의 unique 함수를 이용
그리고 unique 함수가 작동된후에는 컨테이너에 중복된 값이 있던 자리가 남아 있다. 그것도 끝에
v.erase 함수를 이용해서 잔재 제거
예시)
vector 에 1 2 3 4 5 5 6
auto it = v.unique(v.begin(),v.end() )
// 결과 1 2 3 4 5 6 6
v.erase(it , v.end() )
// 결과 1 2 3 4 5
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 | //1181 #include<iostream> #include<vector> #include<algorithm> #include<string> using namespace std; bool cmp(string& u,string& v){ if(u.size() < v.size()) return true; else if (u.size() > v.size() ) return false; else{ return u < v; } } int main(){ int n; cin>>n; vector<string> v; while(n--){ string tmp; cin>>tmp; v.push_back(tmp); } sort(v.begin(),v.end(),cmp); auto it = unique(v.begin(),v.end()); v.erase(it,v.end()); for(auto a:v){ cout<<a<<"\n";} return 0; } //FB1. 중복된 값제거 -> 유니크 -> 필요없는 원소 제가 -> v.erase //FB2. sort 세번째 인자로 비교 함수 넣어주기 // sort 처리 1. 람다 2. 비교함수 3. 클래스 내 비교함수 4. 비교연산자 오버로딩 | cs |
반응형
'알고리즘 > 백준[BOJ] 오답노트' 카테고리의 다른 글
C scanf의 리턴값 무한루프 - 백준 알고리즘 오답노트 11721 (0) | 2019.03.02 |
---|---|
C++ 비교함수 활용 여러 인자 비교하기 - 백준 오답노트 10825 (0) | 2019.03.02 |
C++ rotate 함수 - 백준 알고리즘 오답노트 10812 (0) | 2019.03.02 |
C++ 파일의 끝 직접 입력하기 - 백준 알고리즘 오답노트 1152 (0) | 2019.03.02 |
c++ vector 초기 크기 인자값 문제 - 백준 알고리즘 오답노트 10819 (0) | 2019.02.02 |