[백준 14425][🤍2] 문자열 집합 (해시)

Date:     Updated:

카테고리:

태그:

🚀 난이도

🤍 실버 2


🚀 문제

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

image


🚀 내 풀이 ⭕

“부분 문자열”이 아닌, 정확하게 문자열 전체가 일치하는 것을 찾아야 한다. 즉, 단어 단위로 일치하는 것! 입력 되는 문자열들 중 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 집합 문자열들을 모두 해시셋에 넣은 후, 검사해야할 문자열들을 해시에서 검색해보면 된다. 있다면 카운팅!



🌜 개인 공부 기록용 블로그입니다. 오류나 틀린 부분이 있을 경우 
언제든지 댓글 혹은 메일로 지적해주시면 감사하겠습니다! 😄

맨 위로 이동하기

BOJ 카테고리 내 다른 글 보러가기

댓글 남기기