백준 10816번, 숫자카드2
백준 10816번 c++ 문제풀이
문제:
숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.
풀이:
- 숫자 카드 n개를 벡터에 저장한다.
- 정수 m개를 벡터에 저장한다.
- upperbound, lowerbound 함수를 통해 입력 받은 숫자가 처음등장하는 위치와 마지막에 등장하는 위치를 파악한다.
- 출력
-upper_bound 함수는 입력 받은 숫자보다 큰 숫자가 나오는 그 위치를 반환한다.
코드:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <iostream>
#include <vector>
#include <cmath>
#include <algorithm>
using namespace std;
int main(){
int n,m;
vector <int> v1;
vector <int> v2;
cin >> n;
for(int i=0;i<n;i++){
int input;
cin >> input;
v1.push_back(input);
}
cin >> m;
for(int i=0;i<m;i++){
int input;
cin >> input;
v2.push_back(input);
}
sort(v1.begin(), v1.end());
for(int i=0;i<v2.size();i++){
cout << upper_bound(v1.begin(), v1.end(), v2[i]) - lower_bound(v1.begin(), v1.end(),v2[i]) << " ";
}
return 0;
}
감사합니다.
This post is licensed under CC BY 4.0 by the author.