Study hard
(c++)백준 10815번: 숫자 카드 본문
https://www.acmicpc.net/problem/10815
10815번: 숫자 카드
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net

[풀이]
상근이가 가진 숫자카드를 배열에 저장하고 정렬해 놓고, 확인할 카드가 입력될 때마다 이분 탐색으로 해당 수가 있는지 확인하였다.
입출력 때문에 시간 초과가 나서 cin.tie(0)과 ios_base::sync_with_stdio(false)를 추가해줬다.
#include <iostream>
#include <algorithm>//sort
using namespace std;
#define Max 500001
int N, M;
int SNum[Max];//상근이가 가지고 있는 숫자 카드들
void solution() {
cin >> N;
for (int i = 0; i < N; i++) {
cin >> SNum[i];
}
sort(SNum, SNum + N);
cin >> M;
for (int i = 0; i < M; i++) {
int low = 0;
int high = N - 1;
int card;
bool Yes = false;
cin >> card;
while (low <= high) {
int mid = (low + high) / 2;
//상근이가 해당 숫자카드를 가지고 있으면
if (SNum[mid] == card) {
cout << 1 << ' ';
Yes = true;
break;
}
if (SNum[mid] < card)
low = mid + 1;
else
high = mid - 1;
}
//가지고 있지 않으면
if (!Yes)
cout << 0 << ' ';
}
}
int main() {
cin.tie(0);
ios_base::sync_with_stdio(false);
solution();
return 0;
}
'백준 > 이분, 삼분탐색' 카테고리의 다른 글
(c++)백준 1920번: 수 찾기 (0) | 2021.07.08 |
---|---|
(c++)백준 10816번: 숫자 카드 2 (0) | 2020.06.24 |
(c++)백준 2110번: 공유기 설치 (0) | 2020.06.23 |
(c++)백준 2805번: 나무 자르기 (0) | 2020.06.23 |
(c++)백준 1654번: 랜선 자르기 (0) | 2020.06.23 |