알고리즘 모음(C++)

백준 14425 - 문자열 집합(C++) 본문

백준

백준 14425 - 문자열 집합(C++)

공대생의 잡다한 사전 2023. 7. 2. 22:49

문제 링크입니다. https://www.acmicpc.net/problem/14425

 

14425번: 문자열 집합

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

www.acmicpc.net

 

N개만큼 문자열이 주어지고 M개만큼 문자열이 주어질 때, M개 문자열에 N개 문자열이 몇개가 들어있는지 구하는 문제입니다.

 

N, M이 최대 10,000이기에 완전 탐색을 했다가 시간초과가 됩니다.

 

따라서 이분 탐색을 통해 N 속에 M이 들어있는지 확인해줘야 합니다.

 

 

자세한 것은 코드를 참고해주세요.

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <string>
#include <cstring>
#include <cmath>
#include <map>
#include <vector>

using namespace std;

int N, M, ans;
vector<string> arr;

int main(){
    cin.tie(0);
    cout.tie(0);
    cin >> N >> M;
    for(int i = 1; i <= N; i++){
        string x;
        cin >> x;
        arr.push_back(x);
    }
    sort(arr.begin(), arr.end());
    for(int i = 1; i <= M; i++){
        string x;
        cin >> x;
        if(binary_search(arr.begin(), arr.end(), x)) ans++;
    }
    cout << ans;
    return 0;
}

 

 

질문 및 조언은 댓글을 남겨주세요

'백준' 카테고리의 다른 글

백준 1439 - 뒤집기(C++)  (0) 2023.07.02
백준 1373 - 2진수 8진수(C++)  (0) 2023.07.02
백준 25501 - 재귀의 귀재(C++)  (0) 2023.06.18
백준 12904 - A와 B(C++)  (0) 2023.06.18
백준 4358 - 생태학(C++)  (0) 2023.06.18