U E D R , A S I H C RSS

STL/search

Search

  • ์ปจํ…Œ์ด๋„ˆ์—์„œ ๊ฐ’์„ ์ฐพ๋Š”๋‹ค. ์ฐพ์œผ๋ฉด 1, ๋ชป์ฐพ์œผ๋ฉด 0์„ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.
  • STL์—์„œ๋Š” ์ตœ์ ์˜ ๊ฒ€์ƒ‰ ๊ธฐ๋Šฅ์„ ์ž๋ž‘ํ•˜๋Š”(ฮธ(logn)) Binary Search๋ฅผ ์ œ๊ณตํ•ด์ค€๋‹ค.
  • Binary Search๊ฐ€ ๋ฌด์—‡์ด๋ƒ? ์‚ฌ๋žŒ์ด ์‚ฌ์ „์„ ์ฐพ์„๋•Œ์™€ ๋น„์Šทํ•˜๋‹ค๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.
    1. ์‚ฌ์ „์˜ ๋ฐ˜์„ ํŽผ์นœ๋‹ค.
    2. ๋งŒ์•ฝ์— ๋‚ด๊ฐ€ ์ฐพ๋Š”๊ฐ’์ด ๊ทธ๊ฒƒ๋ณด๋‹ค ๋’ค์— ์žˆ์œผ๋ฉด ๋‚˜๋จธ์ง€ ๋’ท๋ถ€๋ถ„์˜ ๋ฐ˜์„ ํŽผ์นœ๋‹ค.
    3. ๊ทธ๊ฒƒ ๋ณด๋‹จ ์•ž์— ์ž๋ฃŒ๊ฐ€ ์กด์žฌํ•˜๋ฉด ์ฒ˜์Œ ํŽผ์นœ ๊ณณ๊ณผ ์ง€๊ธˆ ํŽผ์นœ๊ณณ์˜ ๊ฐ€์šด๋ฐ๋ฅผ ํŽผ์นœ๋‹ค.

  • ์ด ๊ณผ์ •์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•˜๋ฉด ๊ฐ’์„ ์ฐพ์„์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฐ ํƒ์ƒ‰ ๋ฐฉ๋ฒ•์„ Binary Search ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. ์ด๊ฒƒ์ด ์„ฑ๋ฆฝํ•˜๋ ค๋ฉด, ์›์†Œ๋“ค์ด ์ •๋ ฌ๋˜์–ด ์žˆ๊ณ , ์ž„์˜์ ‘๊ทผ(random)์ด ๊ฐ€๋Šฅํ•ด์•ผ ํ•œ๋‹ค. ์ •๋ ฌ์ด ์•ˆ๋˜์–ด 2,3 ๋ฒˆ์˜ ๊ณผ์ •์„ ์ง„์ƒํ• ์ˆ˜ ์—†๋‹ค.

  • STL์—์„œ๋Š” ์ตœ์ ์˜ ์กฐํ•ฉ์œผ๋กœ, sort + binary_search๋ฅผ ์ถ”์ฒœํ•ด์ค€๋‹ค. ์˜ˆ์ œ๋ฅผ ๋ณด์ž.

~cpp 
#include <iostream>
#include <vector>
#include <algorithm>	// search ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์“ฐ๊ธฐ ์œ„ํ•œ๊ฒƒ

using namespace std;

int main()
{
	int ar[10] = {45,12,76,43,75,32,85,32,19,98};	

	vector<int> v(&ar[0], &ar[10]);		
	sort(v.begin(), v.end());

	if(binary_search(v.begin(), v.end(), 85))
		cout << "์ฐพ์•˜๋‹ค.";
	else 
		cout << "๋ชป์ฐพ์•˜๋‹ค.";

	return 0;
}
  • sortํ•ด์ค€๋‹ค์Œ binary_search()์˜ ์ธ์ž๋กœ๋Š” ์‹œ์ž‘๋ถ€๋ถ„, ๋๋ถ€๋ถ„, ์ฐพ๊ณ ์ž ํ•˜๋Š” ์›์†Œ. ์ด๋ ‡๊ฒŒ ๋„ฃ์–ด์ฃผ๋ฉด ๋œ๋‹ค.
  • list ์ปจํ…Œ์ด๋„ˆ์™€ ๊ฐ™์ด ์ž„์˜์ ‘๊ทผ iterator๋ฅผ ์ง€์›ํ•˜์ง€ ์•Š๋Š” ์ปจํ…Œ์ด๋„ˆ์—๋Š” ์ ์šฉํ•  ์ˆ˜ ์—†๋‹ค.
----
STL
Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:27:58
Processing time 0.0041 sec