처음에 해당하는 값을 count 해주는 방식으로 풀이했는데 시간초과가 계속 떴다.
결국 upper_bound와 lower_bound를 이용해 해결했다.
1. N개의 숫자들을 sort로 오름차순으로 정렬시켜준다.
2. upper_bound - lower_bound를 통해 값을 찾는다.
upper_bound : 찾으려는 원소보다 큰 숫자가 처음 나오는 위치 반환
lower_bound : 찾으려는 원소가 처음 나오는 위치 반환
(시간초과 문제)1.
ios::sync_with_stdio(false);
cin.tie(NULL);
추가
2. cout => printf
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(NULL);
int N, M;
vector<int> vec;
cin >> N;
for (int i = 0; i < N; i++)
{
int input; cin >> input;
vec.push_back(input);
}
sort(vec.begin(), vec.end());
cin >> M;
for (int i = 0; i < M; i++)
{
int input; cin >> input;
int answer = upper_bound(vec.begin(), vec.end(), input) - lower_bound(vec.begin(), vec.end(), input);
printf("%d ", answer);
}
}
'C++ > 백준 코딩테스트 풀이 C++' 카테고리의 다른 글
11650 C++ 좌표 정렬하기/ pair (0) | 2022.08.05 |
---|---|
2751 수 정렬하기 C++ (1) | 2022.07.29 |
C++ 7568 덩치 (0) | 2022.07.22 |
C++ 1436 영화감독 숌 (0) | 2022.07.15 |
C++ 2884 알람시계 (0) | 2022.07.06 |