-
백준 1920번: 수 찾기이분 탐색(Binary Search) 2018. 6. 30. 16:30반응형
https://www.acmicpc.net/problem/1920
1. 문제
N개의 정수 A[1], A[2], …, A[N]이 주어져 있을 때, 이 안에 X라는 정수가 존재하는지 알아내는 프로그램을 작성하시오.
2. 알고리즘
키워드 - 정렬, 이분탐색
3. 코드
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273#include <iostream>#include <sstream>#include <string>#include <algorithm>#include <functional>#include <vector>#include <list>#include <queue>#include <deque>#include <map>#include <set>#include <stack>using namespace std;#define MAX_SIZE 100#define INF 0x7fffffff#define CENDL "\n"/** @memory - 1984 kb* @time - 0 ms*/int card[100001];bool bs(int left, int right, int data){int mid = (left + right) / 2;bool result;if (left > right) {return false;}else {if (card[mid] == data) {return true;}else if (card[mid] > data){result = bs(left, mid - 1, data);}else if (card[mid] < data){result = bs(mid + 1, right, data);}return result;}}int main() {cin.tie(0);std::ios::sync_with_stdio(false);int n; cin >> n;for(int i=0; i<n; i++) {cin >> card[i];}sort(card, card + n);int m; cin >> m;for (int i=0; i<m; i++) {int cand; cin >> cand;if (bs(0, n-1, cand)) {cout << 1 << CENDL;} else {cout << 0 << CENDL;}}return 0;}cs 123456789101112131415161718192021222324252627282930313233343536#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <functional> // greater 사용 위해 필요#include <string>#include <map>#include <unordered_map>#include <math.h>using namespace std;int main() {ios::sync_with_stdio(false); cin.tie(0); // scanf 안쓸 경우 쓰세요. Cin 사용시int n , m;cin >> n;unordered_map<int, int> mm;for(int i =0; i<n; i++) {int cand; cin>> cand;mm[cand] = 0;}cin >> m;for(int i =0; i<m; i++) {int cand; cin >> cand;if (mm.find(cand) != mm.end()) {cout << "1" << "\n";} else {cout << "0" << "\n";}}return 0;}cs 반응형'이분 탐색(Binary Search)' 카테고리의 다른 글
백준 2512번: 예산 (0) 2019.01.20 백준 10815번: 숫자 카드 (0) 2019.01.13 백준 1205번: 등수 구하기 (0) 2018.08.04 백준 2805번: 나무 자르기 (0) 2018.07.06