[백준 14425][🤍2] 문자열 집합 (해시)
카테고리: BOJ
태그: Coding Test Cpp Algorithm
🚀 난이도
🤍 실버 2
🚀 문제
🚀 내 풀이 ⭕
“부분 문자열”이 아닌, 정확하게 문자열 전체가 일치하는 것을 찾아야 한다. 즉, 단어 단위로 일치하는 것! 입력 되는 문자열들 중 n
개는 집합 S 의 문자열들이고 뒤 이어 나오는 m
개는 검사해야 하는 문자열들이다.
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int n, m; cin >> n; cin >> m;
vector<string> s(n); // S집합 문자열
vector<string> arr(m); // 검사해야할 문자열
for (int i = 0; i < n; ++i) cin >> s[i];
for (int i = 0; i < m; ++i) cin >> arr[i];
unordered_set<string> hash_set; // 해시셋
for (int i = 0; i < n; ++i) // 해시셋에 S집합 문자열들 저장
hash_set.insert(s[i]);
int count = 0;
for (int i = 0; i < m; ++i)
if (hash_set.find(arr[i]) != hash_set.end()) // 집합 S 에 있다면
++count;
cout << count;
}
정확하게 문자열 그 자체 단위로만 검색하면 되기 때문에 S 집합 문자열들을 모두 해시셋에 넣은 후, 검사해야할 문자열들을 해시에서 검색해보면 된다. 있다면 카운팅!
🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄
댓글 남기기