hades

[Baekjoon] 1920๋ฒˆ: ์ˆ˜ ์ฐพ๊ธฐ ๋ณธ๋ฌธ

๐Ÿ‘Š PS/Algorithm

[Baekjoon] 1920๋ฒˆ: ์ˆ˜ ์ฐพ๊ธฐ

hades1 2024. 7. 1. 15:10

๐Ÿฅ… ์„ค๊ณ„

https://www.acmicpc.net/problem/1920

 

๐Ÿ” ๋ถ„์„

์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 100000๊ฐœ์ด๊ณ , ์ฐพ์œผ๋ ค๋Š” ์ˆ˜์˜ ๊ฐœ์ˆ˜๊ฐ€ ์ตœ๋Œ€ 100000๊ฐœ์ด๋ฏ€๋กœ, ์ˆœ์ฐจ ํƒ์ƒ‰์„ ํ•  ๊ฒฝ์šฐ, O(10^10)์œผ๋กœ ์‹œ๊ฐ„ ์ œํ•œ์„ ์ดˆ๊ณผํ•œ๋‹ค. ๋”ฐ๋ผ์„œ, ์ด๋ถ„ ํƒ์ƒ‰์„ ํ™œ์šฉํ•œ๋‹ค.

 

๐Ÿ‘Š ํ’€์ด

	#include <iostream>
	#include <vector>
	#include <algorithm>
	using namespace std;
	int n, m, target;
	vector<int> numbers(100001);

	bool binary_search(int target){
		int start = 0, end = n-1, mid;
		while (start <= end) {
			mid = (start+end)/2;
			if (numbers[mid] == target){
				return true;
			}
			else if (numbers[mid] < target){
				start = mid + 1;
			}
			else if (numbers[mid] > target) {
				end = mid - 1;
			}
		}
		return false;
	}

	int main() {
		cin.tie(NULL);
		ios_base::sync_with_stdio(false);
		cin >> n;
		for (int i=0; i<n; i++){
			cin >> numbers[i];
		}
		sort(numbers.begin(), numbers.begin()+n);	
		cin >> m;
		for (int j=0; j<m; j++){
			cin >> target;
			if (binary_search(target)){
				cout << 1 << "\n";
			}
			else{
				cout << 0 << "\n";
			}
		}
		return 0;
	}

 

๐Ÿ“ ๋ฉ”๋ชจ

  • ์ด๋ถ„ ํƒ์ƒ‰์„ ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ๋˜์–ด ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • numbers ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ 100000์œผ๋กœ ์„ ์–ธํ•˜๊ณ , ์ „์ฒด๋ฅผ ์ •๋ ฌํ•˜๋ฉด, ์ •๋ ฌ๋˜์ง€ ์•Š์•„์•ผ ํ•  ์ˆ˜๋“ค๊นŒ์ง€ ์ •๋ ฌ๋˜๋ฏ€๋กœ, ๋ฒ”์œ„๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•œ๋‹ค. ๋ฒ”์œ„ ์ง€์ •์€ sort ๋งค๊ฐœ๋ณ€์ˆ˜์— ์‹œ์ž‘ ์ฃผ์†Œ, ์‹œ์ž‘ ์ฃผ์†Œ+์ •๋ ฌํ•˜๋ ค๋Š” ์›์†Œ์˜ ๊ฐœ์ˆ˜๋กœ ์ „๋‹ฌํ•œ๋‹ค.