๋ฌธ์
์ซ์ ์นด๋๋ ์ ์ ํ๋๊ฐ ์ ํ์ ธ ์๋ ์นด๋์ด๋ค. ์๊ทผ์ด๋ ์ซ์ ์นด๋ N๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ ์ M๊ฐ๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ์๊ฐ ์ ํ์๋ ์ซ์ ์นด๋๋ฅผ ์๊ทผ์ด๊ฐ ๋ช ๊ฐ ๊ฐ์ง๊ณ ์๋์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ซ์ ์นด๋์ ๊ฐ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์ซ์ ์นด๋์ ์ ํ์๋ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ซ์ ์นด๋์ ์ ํ์๋ ์๋ -10,000,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์
์งธ ์ค์๋ M(1 ≤ M ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋ท์งธ ์ค์๋ ์๊ทผ์ด๊ฐ ๋ช ๊ฐ ๊ฐ์ง๊ณ ์๋ ์ซ์ ์นด๋์ธ์ง ๊ตฌํด์ผ ํ M๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ์ด ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด์ ธ ์๋ค. ์ด ์๋ -10,000,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง M๊ฐ์ ์์ ๋ํด์, ๊ฐ ์๊ฐ ์ ํ ์ซ์ ์นด๋๋ฅผ ์๊ทผ์ด๊ฐ ๋ช ๊ฐ ๊ฐ์ง๊ณ ์๋์ง๋ฅผ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด ์ถ๋ ฅํ๋ค.
ํ์ด
์๋ฃ๊ตฌ์กฐ map์ผ๋ก ๊ฐฏ์๋ฅผ ๊ด๋ฆฌํ๊ณ
๊ฐ์ด ์๋์ง ์ฌ๋ถ๋ binary search (์ด๋ถํ์)์ผ๋ก ์์๋๋ค.
๊ทผ๋ฐ ๋ ์ค ํ๋๋ง ์ผ์ด๋ ๋๋ค ์ฌ์ค
[BOJ] ๋ฐฑ์ค 10816๋ฒ: ์ซ์ ์นด๋ 2 (Map ์์ด ์ด๋ถํ์๋ง์ผ๋ก ํ๊ธฐ)
https://www.acmicpc.net/problem/10816 10816๋ฒ: ์ซ์ ์นด๋ 2์ฒซ์งธ ์ค์ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ซ์ ์นด๋์ ๊ฐ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์ซ์ ์นด๋์ ์ ํ์๋ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ซ์ ์นด๋
whkakrkr.tistory.com
#include <bits/stdc++.h>
using namespace std;
bool binary(vector<int>&a, int x) {
int start=0, end=a.size()-1, mid;
while(start<=end) {
mid = (start+end)/2;
if(a[mid] == x) {
return true;
}
if(a[mid] < x) {
start = mid + 1;
} else {
end = mid - 1;
}
}
return false;
}
int main() {
ios_base :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
// input
int n;
cin >> n;
vector<int>a(n);
map<int, int>cnt;
for(int i=0; i<n; i++) {
cin >> a[i];
cnt[a[i]]++;
}
int m;
cin >> m;
// solution
sort(a.begin(), a.end());
int x;
while(m--) {
cin >> x;
int ans = binary(a,x) ? cnt[x] : 0;
cout << ans << " ";
}
return 0;
}
'๐๏ธ PS (BOJ) > Binary Search' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 3079๋ฒ: ์ ๊ตญ์ฌ์ฌ (Gold V) (0) | 2025.04.23 |
---|---|
[BOJ][C++] ๋ฐฑ์ค 1920๋ฒ: ์ ์ฐพ๊ธฐ (Silver IV) (0) | 2025.04.22 |
[BOJ][C++] ๋ฐฑ์ค 1365๋ฒ: ๊ผฌ์ธ ์ ๊น์ค (0) | 2024.09.30 |
[BOJ][C++] ๋ฐฑ์ค 1654๋ฒ: ๋์ ์๋ฅด๊ธฐ (0) | 2023.11.17 |
[BOJ][C++] ๋ฐฑ์ค 2805๋ฒ: ๋๋ฌด ์๋ฅด๊ธฐ (0) | 2023.11.06 |