[백준] 10816번 숫자 카드 2 / C++
#문제
#풀이
#include <iostream>
#include <cstdlib>
using namespace std;
int cards[20000000] = { 0 };
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int n, m;
cin >> n;
for (int i = 0; i < n; ++i)
{
int x;
cin >> x;
if (x < 0)
{
cards[abs(x) + 10000000] += 1;
}
else
{
cards[x] += 1;
}
}
cin >> m;
for (int i = 0; i < m; ++i)
{
int x;
cin >> x;
if (x < 0)
{
cout << cards[abs(x) + 10000000] << " ";
}
else
{
cout << cards[x] << " ";
}
}
return 0;
}
#정리
처음 입력에서 n개의 숫자를 입력 받는다. 그리고 두 번째 입력에서 m개의 숫자를 입력 받는데, 각 숫자가 첫 입력에서 몇 번을 입력 받았는지 출력하는 문제. hash map을 이용하여 빠르게 입력 받고 count를 사용하여 출력하고자 했으나, 시간초과. 원초적 방법인 배열을 사용하여 해결했다. 이슈는 -10,000,000까지 숫자를 입력받을 수 있기 때문에, 음수를 입력받은 경우 사용할 수 있도록 10,000,000개의 배열을 추가로 받아 사용했다. 처음 입력에서 각 배열에 숫자를 더하고, 출력하여 간단하게 해결했다.
Enjoy Reading This Article?
Here are some more articles you might like to read next: