BOJ 1764, 듣보잡

정렬

BOJ 1764, 듣보잡

이 문제는 문자열을 이용한 정렬 문제입니다.

풀이

듣도 못한 놈과 보도 못한놈을 하나의 문자열배열에 입력을 받고 sort를 이용하여 정렬을 해줍니다.

똑같은 문자열이 있다면 듣도 보도 못한 놈일겁니다.

문자열이 정렬되었으므로 바로 옆에 있는 문자열이 똑같다면 듣도 보도 못한 놈입니다.

듣도 보도 못한 놈을 따로 문자열배열에 저장해주고 숫자를 세고 출력을 해줍니다.

#include<iostream>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
	int n, m, cnt = 0;
	string str[1000001],ans[500001];
	cin >> n >> m;
	for (int i = 0; i < n+m; i++)
		cin >> str[i];
	sort(str, str + n + m);
	for (int i = 0; i < n + m - 1; i++)
		if (str[i] == str[i + 1])
			ans[cnt] = str[i], cnt++;
	printf("%d\n", cnt);
	for (int i = 0; i < cnt; i++)
		cout << ans[i] << '\n';
	return 0;
}

출처 : https://www.acmicpc.net/problem/1764