algorithm/Sorting, Binary Search
[C++] BOJ 10815 숫자 카드
gartenhh
2021. 5. 8. 02:07
문제
10815번: 숫자 카드
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
코드
#include <iostream>
#include<algorithm>
using namespace std;
int n, m, card[500005], num;
int search(int num) {
int lt = 0; int rt = n;
int mid;
while (lt <= rt) {
mid = (lt + rt) / 2;
if (num == card[mid]) return 1;
if (num > card[mid]) lt = mid + 1;
else rt = mid - 1;
}
return 0;
}
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> n;
for (int i = 0; i < n; i++)cin >> card[i];
sort(card, card + n);
cin >> m;
while (m--) {
cin >> num;
cout<< search(num)<<' ';
}
}
풀이방법
이중 for문을 이용하면 시간초과가 일어나므로 이분탐색을 이용한다.
고민과정
ios_base::sync_with_stdio(0);랑 cin.tie(0); cout.tie(0);을 빼먹어서 시간초과가 일어났다.