upper_bound && lower_bound 사용해서 원소갯수 찾기

이재영·2023년 1월 15일
0

upper_boundlower_bound를 이용해서 boj 10816번을 풀어보았다.
https://www.acmicpc.net/problem/10816

뒤늦게 map이라는 컨테이너를 알아버려 더 쉽게 풀 수 있었던 점이 조금 아쉽긴했다.

우선 upper_boundlower_bound를 사용하려면
탐색을 할 배열 혹은 벡터가 오름차순으로 정렬되어 있어야한다.

아래코드는 n번 만큼의 수를 입력받고 벡터에 푸쉬한다음,
m번동안, 입력 받은 수의 갯수를 구하는 구현이다.

#include <iostream>
#include <algorithm>
#include <vector>
#pragma warning(disable:4996)
#include <sstream>
#include <math.h>
#define endl '\n'

using namespace std;
typedef long long ll;

int m, n;

int main(int argc, const char * argv[]){
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(nullptr);
    
    cin >> n;
    vector<int> v(n);
    for(int i=0; i<n; i++){
        cin >> v[i];
    }
    
    sort(v.begin(), v.end());
    
    cin >> m;
    int input;
    for(int i=0; i<m; i++){
        cin >> input;
        auto a = upper_bound(v.begin(), v.end(), input);
        auto b = lower_bound(v.begin(), v.end(), input);
        cout << a-b << endl;
    }
    
    return 0;
}
profile
기록

0개의 댓글