프로그래밍 공부/백준 (C++)
[C++/백준 1764번] 듣보잡
Rocketbabydolls
2023. 8. 14. 22:55
https://www.acmicpc.net/problem/1764
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
해결 방법
문제가 말하는 것은 '듣도' 와 '보도' 둘 다에 해당하는 원소를 찾아서 출력하라는 것인데, set을 사용하지 않고 벡터로 한 컨테이너에 전부 입력받은 뒤 정렬하고 연속해서 나타나면 출력하도록 풀었다. 정석은 set을 사용하는 것 같은데 아무쪼록 풀었으니 상관없지 싶다. 다른 코드들도 찾아보니 sort는 무조건 하게 되기 때문.
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
vector<string> v;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
int N, M;
cin >> N >> M;
for (int i = 0; i < N+M; i++)
{
string input;
cin >> input;
v.push_back(input);
}
sort(v.begin(), v.end());
vector<string>::iterator iter;
int cnt = 0;
for(int i = 0 ; i < N+M-1 ; i++)
if(v.at(i) == v.at(i+1))
{
cnt++;
}
cout << cnt << '\n';
for (int i = 0; i < N + M - 1; i++)
if (v.at(i) == v.at(i + 1))
{
cout << v.at(i) << '\n';
i++;
}
return 0;
}