https://www.acmicpc.net/problem/10816
1. upper_bound, lower_bound(begin, end, target)
이분탐색으로 target원소중 가장 우측, 좌측 인덱스 반환
2.전체코드
#include <bits/stdc++.h>
using namespace std;
int n,m;
vector<int> v;
int main() {
/*
* 이진탐색 -> 2^50 -> 시간초과
* 역발상 : target에서 start로 수렴하도록 변경!
*/
ios_base::sync_with_stdio(0);
cin.tie(0);
cin >> n;
while (n--) {
int temp;
cin >> temp;
v.push_back(temp);
}
sort(v.begin(), v.end());
cin >> m;
while (m--) {
int target;
cin >> target;
cout << upper_bound(v.begin(), v.end(), target) - lower_bound(v.begin(), v.end(), target) << " ";
}
return 0;
}
'Algorithm > 이분탐색' 카테고리의 다른 글
프로그래머스 순위검색 c++ // 이분탐색, db설정 (0) | 2024.01.11 |
---|---|
백준 1654 랜선자르기 c++ // 이분탐색, parametric search (0) | 2024.01.04 |
백준 2295 세수의합 c++ // 이분탐색 발상 (0) | 2024.01.03 |
백준 18870 좌표압축 c++ // 이분탐색 (0) | 2024.01.02 |
백준 1920 수찾기 c++ // 이분탐색 stl (0) | 2024.01.01 |