728x90
요즘 map 자료구조를 연습 중이다.
이 문제는 간단한 문제인데 map 자료구조를 사용해서 해당 string key 값을 통해 value값을 비교해서 풀어주었다.
#include <iostream>
#include <unordered_map>
#include <string>
using namespace std;
int N, M, cnt;
string word;
int main() {
ios::sync_with_stdio(false);
cin.tie(0);
cin >> N >> M;
unordered_map<string, bool> m;
for (int i = 0; i < N; i++) {
cin >> word;
m[word] = true;
}
for (int i = 0; i < M; i++) {
cin >> word;
if (m[word])
cnt++;
}
cout << cnt;
}
key는 string, value는 bool로 두고 찾아야 하는 N개의 단어를 true로 바꿔준다.
그 이후에 이 N개의 단어들이 해당되는지 비교할 M개의 단어 집합을 입력받으면서 이 단어들을 key로 만약 그 단어가 true이면 세준다.
이 문자열 문제는 map을 이용할 수도 있고, 트라이라는 자료구조를 이용해서 풀 수도 있다.
트라이 자료구조를 통해 다른 문제를 풀어봐야겠다.
728x90
'문제 풀이 > 백준 알고리즘' 카테고리의 다른 글
[baekjoon 1978] 소수 찾기- 소수, 에라토스테네스의 체 (C++) (0) | 2020.12.30 |
---|---|
[baekjoon 17269] 이름궁합 테스트- 문자열, 구현 (C++) (0) | 2020.12.27 |
[baekjoon 14502] 연구소 - 그래프탐색(BFS,DFS), 브루트포스 (0) | 2020.12.05 |
[baekjoon 1922] 네트워크 연결 - 최소 스패닝 트리(크루스칼, Union-Find) (0) | 2020.11.29 |
[baekjoon 2468] 안전영역 - 그래프탐색(BFS, DFS) (0) | 2020.11.24 |