728x90
- c++
#include <bits/stdc++.h>
#define MAX 10000000
using namespace std;
int arr[MAX * 2 + 1];
int n, m;
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
cin >> n;
for (int i = 0; i < n; ++i) {
int num;
cin >> num;
if (num < 0) arr[MAX + abs(num)]++;
else arr[num]++;
}
cin >> m;
for (int i = 0; i < m; ++i) {
int num;
cin >> num;
if (num < 0) cout << arr[MAX + abs(num)] << " ";
else cout << arr[num] << " ";
}
return 0;
}
|
cs |
배열에 넣어서 처리하는 방식으로 어찌 저찌 통과하긴 했으나
메모리를 상당히 많이 잡아 먹었다.
다른 풀이들을 보니, 이분 탐색으로 많이들 푸는것 같다.
- 다른 풀이
#include <bits/stdc++.h>
using namespace std;
int n, m;
vector<int> vec;
int main() {
cin.tie(0); ios_base::sync_with_stdio(0);
cin >> n;
for (int i = 0; i < n; ++i) {
int num;
cin >> num;
vec.push_back(num);
}
sort(vec.begin(), vec.end());
cin >> m;
for (int i = 0; i < m; ++i) {
int num;
cin >> num;
cout << upper_bound(vec.begin(), vec.end(), num) - lower_bound(vec.begin(), vec.end(), num) << " ";
}
return 0;
}
|
cs |
- 참고
728x90
'PS' 카테고리의 다른 글
프로그래머스 - 프린터 (0) | 2020.11.19 |
---|---|
순열 (0) | 2020.11.18 |
BOJ 15683 - 감시 (0) | 2020.11.13 |
BOJ 18808 - 스티커 붙이기 (0) | 2020.11.13 |
거스름돈 기초 문제 (0) | 2020.11.12 |