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 |