알고리즘/문제 풀이

14425번: 문자열 집합

Themion 2022. 1. 11. 00:04

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

 

14425번: 문자열 집합

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

www.acmicpc.net

unordered_set을 이용해 N개의 중복되지 않는 문자열을 각각 저장한 뒤, S.count를 이용해 M개의 문자열이 있는지를 각각 확인해 더한 값을 출력하면 답을 얻을 수 있다.

#include <iostream>
#include <string>
#include <unordered_set>

using namespace std;

int main() {
    // 입출력 속도 향상
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);
    
    // N: S 안에 든 문자열의 개수, M: S에서 찾을 문자열의 개수
    // ans: S에서 찾은 문자열의 개수
    int N, M, ans = 0;
    // S에 넣거나 S에서 찾을 문자열을 입력받을 공간
    string str;
    // 문자열을 저장하고 검색할 공간
    unordered_set<string> S;

    // N과 M을 입력받은 뒤 중복되지 않는 N개의 문자열을 S에 저장
    for (cin >> N >> M; N--; ) {
        cin >> str;
        S.insert(str);
    }
    // M개의 문자열을 입력받아 각 문자열의 개수를 ans에 저장
    while (M--) {
        cin >> str;
        ans += S.count(str);
    }
    // S에서 찾은 문자열의 개수를 반환
    cout << ans << '\n';

    return 0;
}

'알고리즘 > 문제 풀이' 카테고리의 다른 글

14500번: 테트로미노  (0) 2022.01.11
14490번: 백대열  (0) 2022.01.11
14400번: 편의점 2  (0) 2022.01.10
13594번: 숨바꼭질 3  (0) 2022.01.10
백준 13460번: 구슬 탈출 2  (0) 2022.01.10