문제

문제 링크

어떻게 접근할 것인가

  • 이 문제는 정렬 후 두 수의 upper과 lower bound를 구해서 두 차이를 빼주는 식으로 진행하면 깔끔한 문제이다!

코드

#include <cstdio>
#include <vector>
#include <algorithm>
using namespace std;
int main(){
    int n, m, k;
    scanf("%d", &n);
    vector<int> card(n);
    for(int i = 0; i < n; i++)scanf("%d", &card[i]);
    sort(card.begin(), card.end());
    scanf("%d", &m);
    for(int i = 0; i < m; i++){
        scanf("%d", &k);
        printf("%ld ", upper_bound(card.begin(), card.end(), k) - lower_bound(card.begin(), card.end(), k));
    }
}

느낀점

  • stl을 사용할 수만 있다면 너무 좋다…ㅎㅎ