[210507][백준/BOJ] 10816번 숫자 카드 2

문제

입출력

풀이

upper_bound는 찾고자 하는 값보다 큰 값이 처음 나오는 위치를 반환하는 함수이다.
lower_bound는 찾고자 하는 값 이상이 처음 나오는 위치를 반환하는 함수이다.

upper_bound - lower_bound를 하면 중복된 값이 몇개 있는지 알 수 있다.

코드

#include <bits/stdc++.h>
using namespace std;

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);

	int n, m, num;
	
	cin >> n;
	vector<int> V(n);
	for (int i = 0; i < n; ++i) cin >> V[i];
	sort(V.begin(), V.end());

	cin >> m;
	for (int i = 0; i < m; ++i)
	{
		cin >> num;
		
		// upper_bound는 찾고자 하는 값보다 큰 값이 처음 나오는 위치
		// lower_bound는 찾고자 하는 값 이상이 처음 나오는 위치
		cout << upper_bound(V.begin(), V.end(), num) - lower_bound(V.begin(), V.end(), num) << ' ';
	}
}

좋은 웹페이지 즐겨찾기