문제 풀이/BOJ 문제 풀이

[BOJ알고리즘, C++]#1764_듣보잡, Set

Hardii2 2022. 12. 4. 21:24

 

[BOJ 알고리즘, C++] #1764_듣보잡, Set

 

BOJ 알고리즘 문제 풀이, 1764_듣보잡, Set 문제

Set 컨테이너를 활용해 두 집합의 중복 원소를 선별합니다.

 


 

문제

 

풀이
  1. 이 문제도 역시 Set 컨테이너를 활용하면 간단하게 풀 수 있는 문제입니다.
  2. 먼저, 입력으로 받은 문자열이 이전에도 입력으로 들어왔는지, 즉 중복된 문자열이 들어왔는지 체크하기 위해 Set 컨테이너에 선제적으로 문자열들을 삽입합니다.
  3. 중복되는 문자열일 경우 별도의 Vector 컨테이너를 생성해 항목들을 삽입합니다.
  4. "사전순으로 나열하라" 조건을 충족하기 위해 Vector 컨테이너의 정렬을 수행하고 답을 출력합니다!

 

코드
#include <iostream>
#include <string>
#include <set>
#include <vector>
#include <algorithm>
using namespace std;

int main()
{
    int N, M;
    set<string> s;
    vector<string> v;

    cin >> N >> M;

    string str;
    for(int i=0; i<N+M; i++)
    {
        cin >> str;

        auto it = s.find(str);
        if(it == end(s))
        {
       	// 중복 원소 검열을위한 Set 컨테이너
            s.insert(str);
        }
        else
        {
        // 중복 원소들을 담기위한 Vector 컨테이너
            v.push_back(str);
        }
    }
    // 사전순으로 나열하기 위한 정렬 알고리즘
    sort(begin(v), end(v));

    cout << v.size() << '\n';

    for(string val : v)
        cout << val << '\n';
}