본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 14425/c++] 문자열 집합

by tokkiC 2022. 7. 10.

문자열끼리의 집합에서 같은 문자열이 있는지 찾고 그 수를 카운트 하는 문제다

무작정 for 문으로 if == 으로 비교하기엔 수가 너무 많아 시간초과가 될 수 있으므로

map 이나 set 등을 써서 hash 를 이용해서 찾도록 하여 연산 속도를 높여 시간내에 풀 수 있다

굳이 정렬이 필요하지 않으므로 unordered_map 을 사용하였다

https://www.acmicpc.net/problem/14425

 

14425번: 문자열 집합

첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다.  다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어

www.acmicpc.net

#include <bits/stdc++.h>
using namespace std;

int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);
	
	int n, m;
	int cnt=0;
	string s;
	unordered_map<string, int> mapi;
	
	cin >> n >> m;
	
	for(int i=0; i<n; i++){
		cin >> s;
		mapi[s]=1;
	}
	
	for(int i=0; i<m; i++){
		cin >> s;
		if(mapi[s]==1){
			cnt++;
		}
	}
	
	cout << cnt << "\n";
	
	return 0;
}

댓글