프로그래밍 공부/백준 (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;
}