์ฝ”๋”ฉํ…Œ์ŠคํŠธ/์•Œ๊ณ ๋ฆฌ์ฆ˜

[C++] ๋ฒกํ„ฐ ํƒ์ƒ‰

kite707 2021. 9. 7.

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 << "๋ฒˆ ์ธ๋ฑ์Šค์— ์œ„์น˜ํ•ฉ๋‹ˆ๋‹ค.";

}

 

 

๋Œ“๊ธ€