Algorithm

[C++] lower_bound / upper bound/ 중복제거

moguogu 2022. 7. 3. 14:23

이분탐색을 적용하여 찾고자 하는 값의 index를 반환해주는 함수 (algorithm 헤더 적용 필수! )

 

1. lower_bound(하한) 

      찾고자 하는 그 값 이상인 값의 인덱스 번호를 반환해줌 

sort(idx.begin(), idx.end()); //오름차순 정렬 필수
cout<<lower_bound(idx.begin(), idx.end(), a) - idx.begin() ; //인덱스 반환 , a는 찾고자 하는 그 값

2. upper_bound(상한)

     찾고자 하는 그 값 초과인 값의 인덱스 번호를 반환해줌

sort(idx.begin(), idx.end());//오름차순 정렬
cout<< upper_bound(idx.begin(), idx.end(), a) - idx.begin();//a는 찾고자 하는 값

3. 중복제거

v.erase(unique(v.begin(),v.end()),v.end());

 

알고리즘을 짜다가 벡터관련 헷갈리고, 몰랐던 것들을 발견해서 간단하게 사용법을 정리했다

https://www.acmicpc.net/problem/18870

 

18870번: 좌표 압축

수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌

www.acmicpc.net

이 문제를 풀다가 몰랐던 것 들이다 

'Algorithm' 카테고리의 다른 글

[백준 1992] 쿼드트리  (0) 2022.07.10
[백준 14503] 로봇 청소기  (0) 2022.07.03
[프로그래머스] 숫자 문자열과 영단어  (0) 2022.07.01
[프로그래머스] 124 나라의 숫자  (0) 2022.06.30
[백준 1946] 신입 사원  (0) 2022.06.30