Algorithm ๐ง๐ป๐ป/Note
[C++, ์ ์ฉํ ๋ฌธ๋ฒ] upper_bound, lower_bound
dkswnkk
2022. 5. 11. 14:26
lower_bound
- ์ฉ๋ : ์ฐพ์ผ๋ ค๋ key ๊ฐ๋ณด๋ค ๊ฐ๊ฑฐ๋ ํฐ ์ซ์๊ฐ ๋ฐฐ์ด ๋ช ๋ฒ์งธ์์ ์ฒ์ ๋ฑ์ฅํ๋์ง ์ฐพ๊ธฐ ์ํจ
- ์ฌ์ฉ ์กฐ๊ฑด : ํ์์ ์งํํ ๋ฐฐ์ด ํน์ ๋ฒกํฐ๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋์ด ์์ด์ผ ํจ
- lower_bound์ ๋ฐํํ์ Iterator ์ด๋ฏ๋ก ์ค์ ๋ก ๋ช ๋ฒ์งธ ์ธ๋ฑ์ค์ธ์ง ์๊ณ ์ถ๋ค๋ฉด, lower_bound ๊ฐ์์ ๋ฐฐ์ด ์ฒซ ๋ฒ์งธ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๋ ๋ฐฐ์ด์ ์ด๋ฆ์ ๋นผ ์ค์ผํจ.
1. array
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int arr[6] = { 1,2,3,4,5,6 };
cout << "lower_bound(6) : " << lower_bound(arr, arr + 6, 6) - arr;
// ๊ฒฐ๊ณผ -> lower_bound(6) : 5
}
2. vector
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
vector<int> arr = { 1,2,3,4,5,6,6,6 };
cout << "lower_bound(6) : " << lower_bound(arr.begin(), arr.end(), 6) - arr.begin();
// ๊ฒฐ๊ณผ -> lower_bound(6) : 5
}
upper_bound
- ์ฉ๋ : ์ฐพ์ผ๋ ค๋ key ๊ฐ์ ์ด๊ณผํ๋ ์ซ์๊ฐ ๋ฐฐ์ด ๋ช ๋ฒ์งธ์์ ์ฒ์ ๋ฑ์ฅํ๋์ง ์ฐพ๊ธฐ ์ํจ
- ์ฌ์ฉ ์กฐ๊ฑด : ํ์์ ์งํํ ๋ฐฐ์ด ํน์ ๋ฒกํฐ๋ ์ค๋ฆ์ฐจ์ ์ ๋ ฌ๋์ด ์์ด์ผ ํจ
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
vector<int> arr = { 1,2,3,4,5,6 };
cout << "upper_bound(3) : " << upper_bound(arr.begin(), arr.end(), 3) - arr.begin();
// ๊ฒฐ๊ณผ -> upper_bound(3) : 3
}