https://www.acmicpc.net/problem/14425
14425번: 문자열 집합
첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어
www.acmicpc.net
코드 설명
처음엔 단순히 2중 포문으로 했는데 시간초과였다.. 1억번 이상 연산하기때문이다.
그래서 <unordered_map> c++ stl을 이용하여 해쉬맵 형태로 넣어주고 count()를 이용하여 탐색하였다.
소스 코드
#include<iostream>
#include<queue>
#include<unordered_map>
#include<vector>
using namespace std;
int main() {
unordered_map<string, int> map;
int N, M;
cin >> N >> M;
for (int i = 0; i < N; i++) {
string abc;
cin >> abc;
map.insert({ abc,0 });
}
int cnt = 0;
for (int j = 0; j < M; j++) {
string a;
cin >> a;
if (map.count(a) == 1) {
cnt++;
}
}
cout << cnt;
return 0;
}
'알고리즘 공부 > 백준' 카테고리의 다른 글
[백준] 연구소 (14502번 / C++) (0) | 2021.06.01 |
---|---|
[백준] 단어 정렬 (1181/ C++) (0) | 2021.05.29 |
[백준] 1158 요세푸스 문제(C++) (0) | 2021.05.18 |
[백준] 9663 N-Queen (C++) (0) | 2021.05.17 |
[백준] 9935번 문자열 폭발 C++ (0) | 2021.05.16 |