문제링크 :https://www.acmicpc.net/problem/10815
문제설명
1. 상근이가 가지고있는 숫자 카드 가 주어지고 상근이가 가지고있는지 확인 할 숫자 카드가 주어진다
2. 확인 할 숫자 카드를 순서대로 확인하며 가지고있다면 1을 출력 가지고 있지 않다면 2를 출력한다.
알고리즘
1. 숫자카드 보유여부를 이분탐색으로 구해준다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #include<iostream> #include<vector> #include<algorithm> using namespace std; int main() { cin.tie(NULL); ios::sync_with_stdio(0); int N; cin >> N; vector<int> v; for (int i = 0; i < N; i++) { int num; cin >> num; v.push_back(num); } sort(v.begin(), v.end()); int M; cin >> M; for (int i = 0; i < M; i++) { int num; cin >> num; int low = 0, high = N - 1; bool pos = false; //이분 탐색 while (low <= high) { int mid = (low + high) / 2; if (v[mid] == num) { pos = true; break; } else if (v[mid] < num)low = mid + 1; else high = mid - 1; } if (!pos) cout << 0 << " "; else cout << 1 << " "; } } | cs |
'c++ > 백준' 카테고리의 다른 글
백준 14226번 : 이모 티콘 (0) | 2020.06.03 |
---|---|
백준 1713번: 후보 추천하기 (0) | 2020.05.27 |
백준 1022번: 소용돌이 예쁘게 출력하기 (0) | 2020.05.27 |
백준 2792번 : 보석상자 (0) | 2020.05.27 |
백준 3020번: 개똥 벌레 (0) | 2020.05.27 |