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

메르센고수·2023년 8월 19일
0

Baekjoon

목록 보기
21/48
post-thumbnail

문제 - 듣보잡 (Silver 4)

[백준 1764] https://www.acmicpc.net/problem/1764

풀이 전략

  • 이전에 풀었던 '회사에 있는 사람' 문제랑 상당히 유사한 문제이므로 같은 풀이 방식을 사용한다.
  • 크기가 N인 set와 M인 set 2개를 만들어서 insert 한 뒤, find를 통해 두 set에서 공통된 이름을 찾으면 된다. 공통으로 나온 이름이 듣보잡이다.
  • 사실 이문제는 사전순으로 출력이기 때문에 정렬을 하는 코드를 작성할 필요는 없지만, 사전 역순이라면 정렬을 하는 코드를 작성해야 한다.
  • 정렬을 해야한다는 가정하에 set에서 걸러진 듣보잡을 새로운 vector에 복사한 뒤 vector 내부 데이터의 개수와 데이터들을 출력한다.

소스 코드

#include <iostream>
#include <set>
#include <vector>
using namespace std;

int main(void){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int N,M;
    cin>>N>>M;

    set<string> A;
    set<string> B;

    for(int i=0;i<N;i++){
        string name;
        cin>>name;
        A.insert(name);
    }
    for(int i=0;i<M;i++){
        string name;
        cin>>name;
        B.insert(name);
    }

    vector<string> Member;

    for(const string& person:A){
        if(B.find(person)!=B.end()){
            Member.push_back(person);
        }
    }
   	// A set를 탐색하면서 B에 있는 데이터와 동일한 데이터 탐색
    cout<<Member.size()<<'\n';
    for(int i=0;i<Member.size();i++){
        cout<<Member[i]<<'\n';
    }
    return 0;
}

결과

참고

백준 7785 - 회사에 있는 사람

profile
블로그 이전했습니다 (https://phj6724.tistory.com/)

1개의 댓글

comment-user-thumbnail
2023년 8월 19일

개발자로서 성장하는 데 큰 도움이 된 글이었습니다. 감사합니다.

답글 달기