https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0
www.acmicpc.net
해결 방법
map 의 키값은 중복을 허용하지 않으므로, 가지고 있는 카드를 입력을 받을 때 이전에 추가한 key인지 확인 후 중복되면 해당 숫자의 value 값을 늘려 주는 방식으로 해결했다. map의 키값은 중복이 안된다는 것을 명심하자.
#include <iostream>
#include <algorithm>
#include <unordered_map>
using namespace std;
unordered_map<int, int> m;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N;
cin >> N;
for (int i = 0; i < N; i++)
{
int input;
cin >> input;
if (m.find(input) != m.end())
{
m[input]+=1;
}
else
{
m.insert({ input, 1 });
}
}
int M;
cin >> M;
for (int i = 0; i < M; i++)
{
int input;
cin >> input;
cout << m[input] << " ";
}
return 0;
}
'프로그래밍 공부 > 백준 (C++)' 카테고리의 다른 글
[C++/백준 11478번] 서로 다른 부분 문자열의 개수 (0) | 2023.08.16 |
---|---|
[C++/백준 1764번] 듣보잡 (0) | 2023.08.14 |
[C++/백준 1620번] 나는야 포켓몬 마스터 이다솜 (0) | 2023.08.14 |
[C++/백준 18870번] 좌표 압축 (0) | 2023.08.08 |
[C++/백준 10814번] 나이순 정렬 (0) | 2023.08.08 |