* 사용전 오름차순 정렬 필수
[ lower_bound ]
찾으려는 값보다 같거나 큰 숫자가 배열의 몇 번째에서 처음 등장하는지 이분 탐색.
[ upper_bound ]
찾으려는 값을 초과하는 숫자가 배열의 몇 번째에서 처음 등장하는지 이분 탐색.
이분 탐색이므로 둘 다 O(log N).
vector<int> v;
/* ... */
::sort(v.begin(), v.end());
const int lowerCnt = (::lower_bound(v.begin(), v.end(), 3) - v.begin());
const int upperCnt = (::upper_bound(v.begin(), v.end(), 3) - v.begin());
[ 연습 문제 ]
lower_bound과 upper_bound를 같이 사용하는 풀이 존재.
'컴퓨터공학 > 자료구조 및 알고리즘 이론' 카테고리의 다른 글
[C++] push_back()과 emplace_back(), Add()와 Emplace() (2) | 2024.11.04 |
---|---|
[C++] Hash Table (0) | 2024.08.20 |
[C++] Quick Sort (0) | 2024.07.10 |
[C++] Merge Sort (0) | 2024.07.08 |
[C++] Heap Tree (0) | 2024.07.05 |