이 코드를 쉽게 이해하기 위해서 그림을 그려보았다

이 그림만 봐도 충분히 이해가 될것이라고 생각하지만 더욱 확실한 이해를 위해 주석으로 예제를 넣어보았다
#include <iostream>
#include <algorithm>
using namespace std;
int a[100000];
int main() {
int n;
cin >> n; // 10 10개를 입혁한다는뜻
for (int i = 0; i < n; ++i)
cin >> a[i]; // 6 3 2 10 10 10 -10 -10 7 3 배열이다
sort(a, a + n); // -10 -10 2 3 3 6 7 10 10 10 정렬을 해준것이다
int m;
cin >> m; // 8 8개를 입력한다는 뜻
for (int i = 0; i < m; ++i) {
int x;
cin >> x; // 10 9 -5 2 3 4 5 -10 배열이다
int left = 0, right = n - 1;
bool found = false;
while (left <= right) {
int mid = (left + right) / 2; //mid를 만들어준다(mid가 핵심이다)
if (a[mid] == x) { // 만약 x면? found == true 인거다
found = true; // 뒤에 나올 if문에서 true 이거나 아닌게 필요
break;
} else if (a[mid] < x) { //만약 크다면 left의 값이 이동하고
left = mid + 1;
} else { //작다면 right의 값이 이동한다
right = mid - 1;
}
}
if (found) {
cout << 1 << '\n'; //아까 mid가 x면 found = ture 해줬던걸 사용하는것
} else {
cout << 0 << '\n';
}
}
return 0;
}'코딩 알고리즘 > C \ C++' 카테고리의 다른 글
| 알고리즘 - 그리디 (0) | 2025.06.18 |
|---|---|
| 알고리즘 백준 문제 풀이 - 5차시 (1) | 2025.06.09 |
| 알고리즘 백준 문제 풀이 - 4차시 (0) | 2025.06.02 |
| 백준 알고리즘 문제 풀이 - 2차시 (0) | 2025.05.26 |