Search ¶
- ์ปจํ
์ด๋์์ ๊ฐ์ ์ฐพ๋๋ค. ์ฐพ์ผ๋ฉด 1, ๋ชป์ฐพ์ผ๋ฉด 0์ ๋ฆฌํดํด์ค๋ค.
- STL์์๋ ์ต์ ์ ๊ฒ์ ๊ธฐ๋ฅ์ ์๋ํ๋(ฮธ(logn)) Binary Search๋ฅผ ์ ๊ณตํด์ค๋ค.
- Binary Search๊ฐ ๋ฌด์์ด๋? ์ฌ๋์ด ์ฌ์ ์ ์ฐพ์๋์ ๋น์ทํ๋ค๊ณ ๋ณด๋ฉด ๋๋ค.
- ์ฌ์ ์ ๋ฐ์ ํผ์น๋ค.
- ๋ง์ฝ์ ๋ด๊ฐ ์ฐพ๋๊ฐ์ด ๊ทธ๊ฒ๋ณด๋ค ๋ค์ ์์ผ๋ฉด ๋๋จธ์ง ๋ท๋ถ๋ถ์ ๋ฐ์ ํผ์น๋ค.
- ๊ทธ๊ฒ ๋ณด๋จ ์์ ์๋ฃ๊ฐ ์กด์ฌํ๋ฉด ์ฒ์ ํผ์น ๊ณณ๊ณผ ์ง๊ธ ํผ์น๊ณณ์ ๊ฐ์ด๋ฐ๋ฅผ ํผ์น๋ค.
- ์ฌ์ ์ ๋ฐ์ ํผ์น๋ค.
- STL์์๋ ์ต์ ์ ์กฐํฉ์ผ๋ก, sort + binary_search๋ฅผ ์ถ์ฒํด์ค๋ค. ์์ ๋ฅผ ๋ณด์.
์ด ๊ณผ์ ์ ์ฌ๊ท์ ์ผ๋ก ํ๋ฉด ๊ฐ์ ์ฐพ์์ ์๋ค. ์ด๋ฐ ํ์ ๋ฐฉ๋ฒ์ Binary Search ๋ผ๊ณ ๋ถ๋ฅธ๋ค. ์ด๊ฒ์ด ์ฑ๋ฆฝํ๋ ค๋ฉด, ์์๋ค์ด ์ ๋ ฌ๋์ด ์๊ณ , ์์์ ๊ทผ(random)์ด ๊ฐ๋ฅํด์ผ ํ๋ค. ์ ๋ ฌ์ด ์๋์ด 2,3 ๋ฒ์ ๊ณผ์ ์ ์ง์ํ ์ ์๋ค.
~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