์ฐ์ ๊ธฐ๋ก ๐ช
[C++] ๋ฒกํฐ ํ์ ๋ณธ๋ฌธ
1. ๋ฒกํฐ ๋ด์ ์กด์ฌํ๋์ง ์ฌ๋ถ ํ์ (binary_search)
์ด ๊ฒฝ์ฐ์๋ ์ด์งํ์์ ์ฌ์ฉํ๋๊ฒ์ด ๋น ๋ฅด๋ค. ๋จ ์ด์งํ์์ ์ฌ์ฉํ๋ ค๋ฉด ์ ๋ ฌ์ด ๋์ด์์ด์ผ ํ๋ค. <alogrithm>์ ์ ์๋์ด์๋ค. ์๋์ ๊ฐ์ด ์ฌ์ฉํ๋ค.
binary_search(์์๋ฒ์, ๋๋ฒ์, ์ฐพ์ ๊ฐ);
์์ ์ฝ๋
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int num;
cin >> num;
vector <int> vec = { 1,3,5,7,9 };
//์กด์ฌ์ 1, ๊ทธ๋ ์ง ์์ผ๋ฉด 0 ๋ฆฌํด
if (binary_search(vec.begin(), vec.end(), num)) {
cout << "์กด์ฌํฉ๋๋ค.";
}
else {
cout << "์กด์ฌํ์ง ์์ต๋๋ค.";
}
}
2. ํด๋น ๊ฐ์ ์ธ๋ฑ์ค ์ฐพ๊ธฐ (find)
iterator๋ผ๋ฆฌ ๋นผ๋ฉด ์ซ์๋ฅผ ๋ฐํํ๋ค๋ ์์ด๋์ด์์ ์ฐฉ์ํ์ฌ ์ธ๋ฑ์ค๋ฅผ ์ฐพ๋ ์ฝ๋๋ฅผ ์งค ์ ์๋ค. findํจ์๋ฅผ ์ด์ฉํ๋ค. ๋จ findํจ์๋ ์ฒซ๋ฒ์งธ iterator๋ถํฐ ์ฐพ์๋๊ฐ๋ฉฐ ๊ฐ์ด ์์ผ๋ฉด end iterator๋ฅผ ๋ฐํํ๊ธฐ ๋๋ฌธ์, ์๋ ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ผ๋ ค ํ๋ฉด ๋ง์ง๋ง์ธ๋ฑ์ค+1๊ฐ์ด ์ถ๋ ฅ๋๋ค.
int idx = find(์์๋ฒ์, ๋๋ฒ์, ์ฐพ์ ๊ฐ) - ์์๋ฒ์;
์์ ์ฝ๋
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int num;
cin >> num;
vector <int> vec = { 1,3,5,7,9 };
int idx = find(vec.begin(), vec.end(), num) - vec.begin();
cout << idx << "๋ฒ ์ธ๋ฑ์ค์ ์์นํฉ๋๋ค.";
}
3. string์ findํจ์
์์ ์ดํด๋ณธ algorithm์ ์๋ findํจ์์ ๋ฌ๋ฆฌ string์๋ findํจ์๊ฐ ์๋ค. ๋์ ๋ค๋ฅธ ํจ์์ด๋ค. string์ findํจ์๋ ํด๋น ๊ฐ์ ์ธ๋ฑ์ค๋ฅผ ์ฐพ์์ค๋ค. ์กด์ฌํ์ง ์๋ ๊ฐ์ ์ฐพ์ผ๋ ค ํ๋ฉด -1๋ฅผ ๋ฆฌํดํ๋ค.
string s="abcde";
s.find("์ฐพ์ ๊ฐ");
์์ ์ฝ๋
#include <iostream>
#include <string>
using namespace std;
int main() {
string s = "abcde";
int idx=s.find("c"); //2
cout << idx << "๋ฒ ์ธ๋ฑ์ค์ ์์นํฉ๋๋ค.";
}
'Computer Science > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[C++] ์ซ์ ์๋ฆฟ์ ๋ํ๊ธฐ (0) | 2021.09.07 |
---|---|
[C++ ์๊ณ ๋ฆฌ์ฆ] ๋ถํ ์ ๋ณต(Divide and conquer) (0) | 2021.08.28 |
[C++ ์๊ณ ๋ฆฌ์ฆ] ๊ทธ๋ฆฌ๋(ํ์๋ฒ,Greedy Algorithm) (2) | 2021.08.08 |
[C++ ์๊ณ ๋ฆฌ์ฆ] ๋์ ๊ณํ๋ฒ(Dynamic Programming) (2) | 2021.07.31 |
[C++์๋ฃ๊ตฌ์กฐ] ๋ฐฐ์ด(Array)๊ตฌํ (2) | 2021.04.10 |