해결방법
핵심은 숫자가 -10000000부터 10000000까지 존재한다는 것을 음수로 저장하는 것이 아니라 10000000을 미리 더해줘서 음수를 양수처럼 처리한다는 것이다.
수를 입력받으면 count[temp + DEFAULT] 이런 식으로 아예 그 수의 값을 1씩 증가시키는 방식으로 정리한다.
그다음 수를 입력받으면 그 수의 빈도수를 동일하게 cout << count[temp + DEFAULT]; 이런 방식으로 출력을 한다.
정답 코드
#include <iostream>
#include <vector>
using namespace std;
const int DEFAULT = 10000000;
const int SIZE = 20000001;
int main()
{
ios::sync_with_stdio(false);
cin.tie(0);
int N, M, temp;
vector<int> count(SIZE, 0);
cin >> N;
for (int i = 0; i < N; i++)
{
cin >> temp;
count[temp + DEFAULT]++;
}
cin >> M;
for (int i = 0; i < M; i++)
{
cin >> temp;
if (i > 0) cout << " ";
cout << count[temp + DEFAULT];
}
cout << "\n";
return 0;
}
'코딩테스트' 카테고리의 다른 글
BOJ - 큐 10845 (0) | 2025.01.04 |
---|---|
BOJ - 카드2 2164 (0) | 2025.01.04 |
BOJ - 요세푸스 문제 0 11866 (0) | 2025.01.04 |
BOJ - 팩토리얼 0의 개수 1676 (0) | 2025.01.04 |
BOJ solved.ac 18110 (0) | 2025.01.04 |