๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Coding Test/๋ฐฑ์ค€(BOJ)

[BOJ] ๋ฐฑ์ค€ #1920. ์ˆ˜ ์ฐพ๊ธฐ (C++)

๐ŸŽจ ๋ฌธ์ œ

๋ฌธ์ œ ๋งํฌ: https://www.acmicpc.net/problem/1920

  • ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ถ„๋ฅ˜: ์ด๋ถ„ ํƒ์ƒ‰
  • ๋‚œ์ด๋„: Silver 4

 

 

๐Ÿ’ฌ ํ’€์ด

N๊ฐœ์˜ ์ˆ˜๋“ค์„ ๋ฐฐ์—ด์— ๋‹ด๊ณ , ์ •๋ ฌํ•˜์—ฌ ์ด๋ถ„ํƒ์ƒ‰ ์‹ค์‹œ

 

 

<์‹œํ–‰์ฐฉ์˜ค ์‹œ๋ฆฌ์ฆˆ>

  1. ์ฒ˜์Œ์—๋Š” N๊ฐœ์˜ ์ˆ˜๋“ค์„ ๋ฒกํ„ฐv์— ๋‹ด๊ณ , ๋‹จ์ˆœํžˆ ์„ ํ˜•ํƒ์ƒ‰์œผ๋กœ ํ–ˆ๋‹ค๊ฐ€ ์‹œ๊ฐ„์ดˆ๊ณผ ๋‚ฌ์—ˆ๋‹ค.  ๐Ÿ‘‰๐Ÿป ํ‹€๋ฆฐ ์ฝ”๋“œ ํ™•์ธ
  2. ๊ทธ๋ž˜์„œ ์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ํ–ˆ๋Š”๋ฐ๋„, ์ด๋ถ„ํƒ์ƒ‰ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฒกํ„ฐ ์ „์ฒด๋ฅผ ๋„˜๊ธฐ๋‹ˆ๊นŒ ๋˜ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋–ด๋‹ค.  ๐Ÿ‘‰๐Ÿป ํ‹€๋ฆฐ ์ฝ”๋“œ ํ™•์ธ
  3. ๊ทธ๋ž˜์„œ ๋ฒกํ„ฐ ํฌ๊ธฐ๋ฅผ ๋™์ ์œผ๋กœ ํ•˜์ง€ ์•Š๊ณ  ์ „์—ญ์œผ๋กœ ๋บ€ ๋‹ค์Œ v(100001)์„ ํ• ๋‹นํ–ˆ๋‹ค. ์ด๋•Œ sort(v.begin(), v.end())๊ฐ€ ์•„๋‹ˆ๋ผ i=0๋ถ€ํ„ฐ i=N-1๊นŒ์ง€๋งŒ ๋ถ€๋ถ„์ •๋ ฌ์„ ํ•ด์•ผ ํ–ˆ๋Š”๋ฐ, ํ•  ์ค„ ๋ชฐ๋ผ์„œ ํ‹€๋ ธ๋‹ค. (sort(v, v+N)์€ ์•ˆ๋˜๋”๋ผ.)  ๐Ÿ‘‰๐Ÿป ํ‹€๋ฆฐ ์ฝ”๋“œ ํ™•์ธ
  4. ๊ทธ๋ž˜์„œ ์ตœ์ข…์ ์œผ๋กœ intํƒ€์ž… ์ „์—ญ ๋ฐฐ์—ด arr์— ๋‹ด๋Š” ๊ฑธ๋กœ ๋ฐ”๊พธ๊ณ , sort(arr, arr+N) ํ•ด์ค˜์„œ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

 

 

๐Ÿ‘ฉ‍๐Ÿ’ป ์ฝ”๋“œ

C++

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <algorithm>
using namespace std;

int N, M;
int arr[100001];

int binarySearch(int target) {
	int st = 0;
	int en = N - 1;
	int mid;
	while (st <= en) { // start์™€ end๊ฐ€ ์—ญ์ „๋˜๋ฉด target์ด ์กด์žฌํ•˜์ง€ ์•Š์Œ์„ ์˜๋ฏธํ•œ๋‹ค.
		mid = (st + en) / 2;
		if (target == arr[mid]) return 1;
		else {
			if (target < arr[mid]) en = mid - 1;
			else st = mid + 1;
		}
	}
	return 0;
}

int main(void) {
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	//freopen("input.txt", "rt", stdin);

	cin >> N;
	for (int i = 0; i < N; i++) {
		cin >> arr[i];
	}
	sort(arr, arr + N); // ์ •๋ ฌ

	cin >> M;
	int num;
	while (M--) {
		cin >> num;
		cout << binarySearch(num) << '\n';
	}

	return 0;
}