문제풀이/백준oj
[백준OJ] 14425번 문자열 집합
Hyeon-Uk
2021. 8. 19. 22:41
반응형
https://www.acmicpc.net/problem/14425
14425번: 문자열 집합
첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어
www.acmicpc.net
풀이
트라이 알고리즘을 이용하여 문제를 해결해도 되는데, 그보다 더 간단한 Map 자료구조를 이용하여 문제를 해결했다. Key를 입력받은 N개의 문자열로 하고, 그 문자열에 대한 value를 모두 true로 셋팅을 해준뒤 , m개의 문자열을 입력받으면서, map안에 해당 문자열에 대한 value값이 true인지 체크를 해주며, true면 cnt를 1 증가시킨다.
코드
#include<iostream>
#include<algorithm>
#include<string>
#include<map>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
map<string, bool> ma;
int n, m;
cin >> n >> m;
for (int i = 0; i < n; i++) {
string input;
cin >> input;
ma[input] = true;
}
int cnt = 0;
for (int i = 0; i < m; i++) {
string input;
cin >> input;
if (ma[input]) {
cnt++;
}
}
cout << cnt << "\n";
return 0;
}
반응형