-
[백준/BOJ] 1764번 듣보잡 (C++)알고리즘 문제풀이/백준 2020. 12. 1. 14:04
map 자료구조를 이용하는 쉬운 문자열 문제입니다.
이름을 key값, 이름이 나오는 수를 value로 설정합니다. n과 m만큼 반복문을 돌려 입력받은 문자열을 map의 key로 둬 값을 증가시키고, 이름이 2번 이상 나온경우 듣보잡이므로 해당 값을 벡터에 넣어 정렬 후 출력하면 간단하게 해결할 수 있습니다.
#include <iostream> #include <map> #include <algorithm> using namespace std; int main(void) { ios_base::sync_with_stdio(false); cin.tie(0); int n, m; // 듣도 못한 사람, 보도 못한 사람 map<string, int> name; string str; cin>>n>>m; for(int i = 0; i < n; i++) { cin>>str; name[str]++; } for(int i = 0; i < m; i++) { cin>>str; name[str]++; } map<string, int>::iterator it; vector<string> v; // 해당 이름이 2번 나온걸 찾아서 벡터에 key값을 넣는다. for(it = name.begin(); it != name.end(); it++) { if(it -> second > 1) v.push_back(it -> first); } sort(v.begin(), v.end()); // 중복된 이름이 없는 경우 벡터가 empty 될 수 있으므로 예외처리 if(!v.empty()) { cout<<v.size()<<"\n"; for(string s : v) { cout<<s<<"\n"; } } else { cout<<"0"; } }
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
[백준/BOJ] 3190번 뱀 (C++) (0) 2020.12.04 [백준/BOJ] 15686번 치킨 배달 (C++) (0) 2020.12.03 [백준/BOJ] 1941번 소문난 칠공주 (C++) (0) 2020.12.01 [백준/BOJ] 9663번 N-Queen (C++) (0) 2020.11.30 [백준/BOJ] 1799번 비숍 (C++) (0) 2020.11.30