-
백준 10815번: 숫자 카드이분 탐색(Binary Search) 2019. 1. 13. 19:34반응형
https://www.acmicpc.net/problem/10815
1. 문제
2. 알고리즘
키워드 - 이분탐색, 구현
초기에 map 에다가 data 를 넣고 find 메소드로 원소가 있는지 확인하는 방법을 사용했으나 시간초과 및 메모리 사용량이 높아서 변경
3. 코드
12345678910111213141516171819202122232425262728293031323334353637#include <iostream>#include <cstdio>#include <algorithm>#include <vector>#include <functional> // greater 사용 위해 필요#include <string>#include <map>#include <unordered_map>#include <math.h>using namespace std;// map 사용한 소스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 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475#include <iostream>#include <sstream>#include <string>#include <algorithm>#include <functional>#include <vector>#include <list>#include <queue>#include <deque>#include <map>#include <set>#include <stack>#include <math.h>#include <memory.h>using namespace std;#define MAX_SIZE 100#define INF 0x7fffffff#define CENDL "\n"#define ll long long#define c_reverse(s) reverse(s.begin(), s.end())#define c_sort(s) sort(s.begin(), s.end())#define print_vector(v) for(int i=0; i<v.size(); i++) cout << v[i];vector<int> arr;bool bs(int left, int right, int data) {if (left > right) {return false;}int mid = (left + right) / 2;if (arr[mid] == data) {return true;}else if (arr[mid] < data) {// 이자식아 left 를 ++ 가 아니라 mid 의 값에서 올리고 내리고다return bs(mid + 1, right, data);}else {// right + 1 하면 oveflow 자나 으아아return bs(left, mid - 1, data);}}int main() {ios::sync_with_stdio(false); cin.tie(0); // scanf 안쓸 경우 쓰세요. Cin 사용시int n, m; cin >> n;for (int i = 0; i<n; i++) {int data; cin >> data;arr.push_back(data);}sort(arr.begin(), arr.end());cin >> m;for (int i = 0; i<m; i++) {int data; cin >> data;if (bs(0, n, data)) {cout << "1";// << " ";}else {cout << "0";// << "\n";}cout << " ";}return 0;}cs 반응형'이분 탐색(Binary Search)' 카테고리의 다른 글
백준 2512번: 예산 (0) 2019.01.20 백준 1205번: 등수 구하기 (0) 2018.08.04 백준 2805번: 나무 자르기 (0) 2018.07.06 백준 1920번: 수 찾기 (0) 2018.06.30