코테/백준

[백준] 1764 듣보잡 - C++

gayoungeeda 2023. 7. 19. 22:03
728x90

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

 

문제 설명


문제 풀이

#include<stdio.h>
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;

string arr[500001];
string answer[500001];
int main()
{
    int i, n, m, cnt = 0;

    scanf("%d%d", &n, &m);

    for(i = 0; i < n+m; i++) {
        cin >> arr[i];
    }

    sort(arr, arr+n+m);

    for(i = 1; i < n+m; i++) {
        if(arr[i] == arr[i-1])
            answer[cnt++] = arr[i];
    }

    cout << cnt << "\n";

    for(i = 0; i < cnt; i++) {
        cout << answer[i] << "\n";
    }

    return 0;
}

각 명단에는 중복되는 이름이 없다는 조건이 전제되어 있으므로

두 명단에 모두 속해있는 사람 = 두 명단을 한번에 입력받아 정렬했을 때 이름이 두개 들어있음 = 배열의 i번째와 i-1번째를 비교해서 같음