Algorithm
백준 1764번 듣보잡
이무쿤
2020. 1. 1. 09:46
반응형
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
1. java와 달리 c++은 string객체에 있어서 내용이 같으면 같은 인스턴스로 봄.
2. vector push_back하면 인덱스 배열로 바로 참조 가능.
간단한 문제였지만 더 간단한 문제인 줄 알았는데 나름 정렬도 필요하고 시간초과 잡기위해 맵도 쓰고 했어야 하는 문제였다.
#include<iostream>
#include<string>
#include<cmath>
#include<map>
#include<vector>
#include<algorithm>
using namespace std;
map<string,int> m;
vector<string> vec;
int result = 0;
int main(void)
{
int N, M;
cin >> N >> M;
string str;
int index = 0;
for(int i = 0; i<N; i++)
{
cin >> str;
m[str] = 1;
}
for(int j = 0; j <M; j++)
{
cin >> str;
if(m[str])
{
result++;
vec.push_back(str);
index++;
}
}
sort(vec.begin(),vec.end());
cout << result <<endl;
for(int i = 0; i<index; i++)
{
cout<<vec[i]<<endl;
}
}
반응형