문자열끼리의 집합에서 같은 문자열이 있는지 찾고 그 수를 카운트 하는 문제다
무작정 for 문으로 if == 으로 비교하기엔 수가 너무 많아 시간초과가 될 수 있으므로
map 이나 set 등을 써서 hash 를 이용해서 찾도록 하여 연산 속도를 높여 시간내에 풀 수 있다
굳이 정렬이 필요하지 않으므로 unordered_map 을 사용하였다
https://www.acmicpc.net/problem/14425
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m;
int cnt=0;
string s;
unordered_map<string, int> mapi;
cin >> n >> m;
for(int i=0; i<n; i++){
cin >> s;
mapi[s]=1;
}
for(int i=0; i<m; i++){
cin >> s;
if(mapi[s]==1){
cnt++;
}
}
cout << cnt << "\n";
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 1978/c++] 소수 찾기 (0) | 2022.07.12 |
---|---|
[백준 1439/c++] 뒤집기 (0) | 2022.07.11 |
[백준 2847/c++] 게임을 만든 동준이 (0) | 2022.07.09 |
[백준 1302/c++] 베스트셀러 (0) | 2022.07.08 |
[백준 10799/c++] 쇠막대기 (0) | 2022.07.07 |
댓글