https://www.acmicpc.net/problem/14425
N개의 문자를 받고 받은 문자가 M개의 문자에서 몇개나 있는지 검사하면 된다. 나는 map 자료형을 사용해서 string과 bool을 매치시켜주어서 N개의 문자에서 발견된거라면 true를 배정해주고 이를 m개의 단어를 받으면서 true라면
cnt를 증가시켜주었다.
이때 unordered_map을 자주 사용하는데
데이터의 정렬이 필요하지 않고, 평균적으로 빠른 성능을 원하는 경우 unordered_map이 적합하고 정렬, 추가적인 메모리 오버헤드 방지, 탐색성능이 예측가능한 상황이 필요할 때 map이 적합하다.
정답코드(map 사)
#include "iostream"
#include "map"
using namespace std;
map<string, bool> mp;
int main()
{
int n, m, cnt = 0;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
string word;
cin >> word;
mp[word] = true;
}
for (int i = 0; i < m; i++)
{
string word;
cin >> word;
if (mp[word]) cnt++;
}
cout << cnt << endl;
return 0;
}
정답코드2(unordered_map 사용)
#include "iostream"
#include "unordered_map"
using namespace std;
unordered_map<string, bool> mp;
int main()
{
int n, m, cnt = 0;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
string word;
cin >> word;
mp[word] = true;
}
for (int i = 0; i < m; i++)
{
string word;
cin >> word;
if (mp[word]) cnt++;
}
cout << cnt << endl;
return 0;
}
위가 unordered_map 방식이고 밑이 map방식으로 푼 결과이다.
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]1620번. 나는야 포켓몬 마스터 이다솜 (3) | 2024.09.27 |
---|---|
[백준][C++]7785번. 회사에 있는 사람 (4) | 2024.09.26 |
[백준][C++]10815번. 숫자 카드 (0) | 2024.09.25 |
[백준][C++]18870번. 좌표 압축 (0) | 2024.09.24 |
[백준][C++]10814번. 나이순 정렬 (2) | 2024.09.23 |