반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 프로그래머스
- 컴퓨터그래픽스
- 대전맛집
- 어은동맛집
- 자바스크립트
- 후기
- 앱개발
- DP
- 카이스트맛집
- 타입스크립트
- 프래그먼트
- MySQL
- html
- 우선순위큐
- 알고리즘
- node.js
- 위상정렬
- BFS
- 궁동
- 카이스트
- nodeJS
- 분리집합
- 몰입캠프후기
- 자바
- 몰입캠프
- 리사이클러뷰
- glfw
- 안드로이드스튜디오
- computergraphics
- 백준
Archives
- Today
- Total
소근소근
C++ upper_bound , lower_bound 이용하기 / 알고리즘 본문
728x90
반응형
SMALL
- C++에서 제공하는 이진탐색 기반의 탐색 함수이다.
- 이진 탐색 기반이므로 O(logN)의 복잡도로 탐색이 가능하다.
- 배열은 오름차순 혹은 내림차순으로 정렬이 되어 있어야 한다.
1. lower_bound
vector <int> num = { 3,4,4,5,6 };
int idx = lower_bound(num.begin(), num.end(), 4) - num.begin();
cout << idx;
출력 : 1
배열에서 주어진 값과 같거나 큰수인 수가 가장 처음 등장하는 인덱스값을 찾을 때 사용한다.
lower_bound는 iterator를 반환하기 때문에 인덱스를 바로 알고자 할 경우 vector.begin()을 빼준다.
배열이라면, 배열의 이름을 빼주면 된다.
2. upper_bound
vector <int> num = { 3,4,5,7,8 };
int idx = upper_bound(num.begin(), num.end(), 5) - num.begin();
cout << idx;
출력 : 3
배열에서 주어진 값보다 큰 수(초과)가 가장 처음 등장하는 인덱스 값을 찾을 때 이용한다.
예시의 경우 5보다 큰 수인 7이 인덱스 3 이므로 3번째를 리턴한다.
3. 사용
1) 두개를 함께 사용하여 정렬된 배열에서 a 이상, b 이하 숫자들의 개수를 구하는 데 사용할 수 있다.
vector <int> num = { 3,4,5,7,8,8,11 };
int cnt = upper_bound(num.begin(), num.end(), 10) - lower_bound(num.begin(), num.end(), 5);
cout << cnt;
출력 : 4 (5이상 10 이하 수의 개수)
2) 정렬된 배열에서 특정 수가 몇번 나오는지 알고자 할 때 유용
vector <int> num = { 3,4,5,7,8,8,11 };
int cnt = upper_bound(num.begin(), num.end(), 8) - lower_bound(num.begin(), num.end(), 8);
cout << cnt;
출력 : 2 (8의 개수)
728x90
반응형
LIST
'Algorithm' 카테고리의 다른 글
[알고리즘/자료구조] 분리 집합( Disjoint Set (a.k.a Union & Find) ) 코드 구현 C++ , 집합 크기 구하기 (0) | 2022.01.05 |
---|---|
[백준 BOJ 13711 glod1 - LCS4] Longest Common String (LCS) C++ (0) | 2022.01.04 |
[백준 BOJ 17218 glod5 - 비밀번호 만들기] Longest Common String (LCS) C++ (0) | 2022.01.04 |
[백준 BOJ 3665 gold1 - 최종 순위] 위상정렬(topological sort) C++ (0) | 2021.12.31 |
[백준 BOJ 2056 gold4 - 작업] 위상정렬(topological sort) C++ (0) | 2021.12.31 |