๋ฌธ์
์ฌํด์๋ ๋ ์ข ๋ฅ์ ์๋ช ์ฒด A์ B๊ฐ ์กด์ฌํ๋ค. A๋ B๋ฅผ ๋จน๋๋ค. A๋ ์๊ธฐ๋ณด๋ค ํฌ๊ธฐ๊ฐ ์์ ๋จน์ด๋ง ๋จน์ ์ ์๋ค. ์๋ฅผ ๋ค์ด, A์ ํฌ๊ธฐ๊ฐ {8, 1, 7, 3, 1}์ด๊ณ , B์ ํฌ๊ธฐ๊ฐ {3, 6, 1}์ธ ๊ฒฝ์ฐ์ A๊ฐ B๋ฅผ ๋จน์ ์ ์๋ ์์ ๊ฐ์๋ 7๊ฐ์ง๊ฐ ์๋ค. 8-3, 8-6, 8-1, 7-3, 7-6, 7-1, 3-1.
๋ ์๋ช ์ฒด A์ B์ ํฌ๊ธฐ๊ฐ ์ฃผ์ด์ก์ ๋, A์ ํฌ๊ธฐ๊ฐ B๋ณด๋ค ํฐ ์์ด ๋ช ๊ฐ๋ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ํ ์คํธ ์ผ์ด์ค์ ๊ฐ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ์ผ์ด์ค์ ์ฒซ์งธ ์ค์๋ A์ ์ N๊ณผ B์ ์ M์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ A์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ์ฃผ์ด์ง๋ฉฐ, ์ ์งธ ์ค์๋ B์ ํฌ๊ธฐ๊ฐ ๋ชจ๋ ์ฃผ์ด์ง๋ค. ํฌ๊ธฐ๋ ์์ ์ ์์ด๋ค. (1 ≤ N, M ≤ 20,000)
์ถ๋ ฅ
๊ฐ ํ ์คํธ ์ผ์ด์ค๋ง๋ค, A๊ฐ B๋ณด๋ค ํฐ ์์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
2
5 3
8 1 7 3 1
3 6 1
3 4
2 13 7
103 11 290 215
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
7
1
ํ์ด๊ณผ์
[C++ Algorithm] ์ด๋ถ ํ์(Binary Search)
โญ๏ธ ์ด๋ถ ํ์(Binary search)์ด๋? - ์ ๋ ฌ๋ ๋ฆฌ์คํธ(๋ฐฐ์ด)์์ ์ํ๋ ๊ฐ(target)์ ์กด์ฌ ์ฌ๋ถ(์กด์ฌ ์์น)๋ฅผ ์ฐพ๋ ์๊ณ ๋ฆฌ์ฆ. - ๋ฐ๋์ ๋ฆฌ์คํธ(๋ฐฐ์ด)๋ฅผ ์ ๋ ฌํด์ ์ฌ์ฉํด์ผ ํ๋ค๋ ๋จ์ ์ด ์๋ค. - ํ์ํ
m42-orion.tistory.com
์ด๋ถํ์์ด๋ผ๋ ๊ฐ๋ ์์ฒด๋ฅผ ์ ํด๋ณธ์ ์ด ์์ด์ ๊ฐ๋ ์ ์ดํดํ๋๋ฐ ์ค๋์๊ฐ์ ํฌ์ํ๊ฒ ๋์๋ค.
์์ ์๋ ๋งํฌ๋ถ์ ๊ธ์ ์ฐธ์กฐํด์ ์ด๋ถํ์์ด ๋ญ์ง ๊ฐ๋ ์ ์ก์๊ณ ๋ฐฑ์ค์ ์๋ ๋ฌธ์ ๋ฅผ ํ๋ฉฐ ์ด๋ป๊ฒ ์์ฉํด์ ์ฝ๋๋ฅผ ๊ตฌ์ฑํด์ผํ๋์ง ์๊ฐ์ ํ๋ฉฐ ํ๊ฒ๋์์ต๋๋ค.
code
#include <iostream>
#include <algorithm>
#include <vector>
int binary_search(std::vector <int>& n, int temp)
{
int low, high, mid, num;
num = 0;
low = 0;
high = n.size() - 1;
while (low <= high)
{
mid = (low + high) / 2;
if (temp < n[mid])
high = mid - 1;
else if (temp >= n[mid])
low = mid + 1;
}
num = n.size() - low;
return num;
}
int main(void)
{
int t, a, b, temp, count;
std::vector <int> n;
std::cin >> t;
for(int i = 0; i < t; i++) {
std::cin >> a >> b;
for(int j = 0; j < a; j++) {
std::cin >> temp;
n.push_back(temp);
}
std::sort(n.begin(), n.end());
count = 0;
for(int j = 0; j < b; j++) {
std::cin >> temp;
count += binary_search(n, temp);
}
n.clear();
std::cout << count << "\n";
}
return (0);
}
ํ๊ธฐ
๊ทธ๋ ๊ฒ ์ค๋์๊ฐ์ ํฌ์ํ์ง์์์ด๋ ๋ ๋งํ ๋ฌธ์ ์ธ๊ฑฐ๊ฐ์๋ฐ
์ดํดํ๋์๊ฐ๊ณผ ์ด๋ป๊ฒ ์์ฉ์ ํด์ผํ๋์ง ๊ฐ๋ ์ก๊ธฐ๊ฐ ๋๋ฌด ํ๋ค์์ด์ ์๊ฐ์ด ๊ฑธ๋ ค๋ฒ๋ ธ๋ค...
'Algorithm > ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1057๋ฒ - ํ ๋๋จผํธ (C++) (0) | 2023.07.09 |
---|---|
[๋ฐฑ์ค] 1049๋ฒ - ๊ธฐํ์ค (C++) (0) | 2023.07.08 |
[๋ฐฑ์ค] 2193๋ฒ - ์ด์น์ (C++) (0) | 2023.07.06 |
[๋ฐฑ์ค] 1912๋ฒ - ์ฐ์ํฉ (C++) (0) | 2023.07.06 |
[๋ฐฑ์ค] 11501๋ฒ - ์ฃผ์ (C++) (0) | 2023.07.04 |