문제풀이/백준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;
}

 

반응형