-
Notifications
You must be signed in to change notification settings - Fork 2
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* feat : [Algorithm] 백트래킹 정리 * fix : 이미지 깨진거 수정 * feat : [Alogorithm] DFS 정리 * fix : 이미지 깨진거 수정 * feaat : binary search push
- Loading branch information
Showing
1 changed file
with
47 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
>이분 탐색이란? | ||
>정렬되어 있는 배열에서 빠른속도(O(logn))로 탐색할 수 있는 탐색방법 | ||
## 예시 | ||
|
||
<img width="799" alt="image" src="https://github.com/user-attachments/assets/483143d3-3a79-4853-81c4-ba356ec8cf46" /> | ||
위의 이미지에서 오름차순으로 정렬되어 있는 배열이 존재한다고 하자. | ||
(시작점+끝점)/2 = 중앙값이라고 할때, 탐색 값이 중앙값보다 작다면, 중앙값보다 크거나 같은 곳은 탐색할 필요가 없다. | ||
|
||
|
||
## 예시문제 | ||
![image](https://github.com/user-attachments/assets/8c491bae-8d0e-475f-8a32-2faa1ac2054c) | ||
|
||
기본적인 이분탐색을 사용해서 해결하는 문제, c++의 lower_bound()를 이용하면 쉽게 해결할 수 있는 문제이다. 일반적인 탐색방법으로는 위의 문제에서의 정수의 범위를 견딜 수 없으니, 이분탐색을 통해 배열에 해당 수가 있는지 없는지 파악하면 해결할 수 있다. | ||
|
||
## 해결 코드(c++) | ||
```c++ | ||
#include <bits/stdc++.h> | ||
#define endl "\n" | ||
using ll = long long; | ||
using namespace std; | ||
vector<ll>A; | ||
int main() { | ||
ios::sync_with_stdio(false); | ||
cin.tie(NULL); | ||
|
||
ll n; cin >> n; | ||
for (int i=0;i<n;i++) { | ||
ll num;cin >> num; | ||
A.push_back(num); | ||
} | ||
sort(A.begin(),A.end()); | ||
ll m,num; cin >> m; | ||
for (int i=0;i<m;i++) { | ||
cin >> num; | ||
ll idx = lower_bound(A.begin(),A.end(),num)-A.begin(); | ||
|
||
if (idx < n && A[idx] == num) | ||
cout << 1 << endl; | ||
else | ||
cout << 0 << endl; | ||
} | ||
} | ||
``` | ||
|
||
## 추천 문제 | ||
https://www.acmicpc.net/problem/12015 가장 긴 증가하는 부분수열2 (1은 다른 태그라서 pass) |