Algorithm/BOJ
백준 1764번 C++
poopooreum
2023. 7. 25. 20:03
반응형
백준 1764번 듣보잡
https://www.acmicpc.net/problem/1764
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
정답 코드
#include<iostream>
#include<map>
#include<string>
#include<vector>
using namespace std;
int main() {
map<string, int>mp;
vector < string > p;
int n, m;
string input;
cin >> n >> m;
for (int x = 0; x < n + m; x++) {
cin >> input;
mp[input]++;
}
for (auto iter = mp.begin(); iter != mp.end(); iter++) {
if (iter->second > 1)
p.push_back(iter->first);
}
cout << p.size() << endl;
for (int x = 0; x < p.size(); x++)
cout << p[x] << endl;
}
문제 풀이
자료구조 map을 이용해서 풀 수 있습니다. map은 중복이 허용되지 않는다는 특징이 있습니다. N개의 문장과 M개의 문장을 입력받는 동시에 map[index]++을 해줍니다. map은 key와 value로 이루어져 있고 이 문제에서 key는 문자열이고 value는 횟수입니다. 그래서 위 문장처럼 선언하면 문자열에 해당되는 value가 증가합니다. 이렇게 하고 나서 iterator를 이용하면 됩니다. iter->second>1이면 듣보잡이므로 이에 해당되는
문장을 vector에 추가하면 됩니다.
반응형