728x90
반응형
https://www.acmicpc.net/problem/1764
1764번: 듣보잡
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.
www.acmicpc.net
---------------------------------------------------핵심 알고리즘--------------------------------------------
set+sort
---------------------------------------------------풀이----------------------------------------------------
듣도 못한 사람의 명단을 set에 저장한 뒤, 보도 못한 사람이 set에 존재할 경우 교집합으로 vector에 저장한다.
사전순으로 출력해야 하므로 vector를 sorting하여 순서대로 출력한다.
#define FASTIO ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);
#include <iostream>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <queue>
#include <cmath>
#include <stack>
#include <limits.h>
#include <map>
#include <set>
using namespace std;
set<string> s;
// set A와 set B의 교집합=? 사전순 출력
int main(void){
FASTIO;
int N, M;
cin >> N >> M;
// 교집합을 저장할 벡터
vector<string> v;
string tmp;
for(int i = 0; i < N; i++){
cin >> tmp;
s.insert(tmp);
}
for(int i = 0; i < M; i++){
cin >> tmp;
// set에 있는 값이면 교집합으로 저장
if(s.find(tmp) != s.end()){
v.push_back(tmp);
}
}
// 사전순으로 출력
sort(v.begin(), v.end());
cout << v.size() << "\n";
for(int i = 0; i < v.size(); i++){
cout << v[i] << "\n";
}
return 0;
}
---------------------------------------------------후기----------------------------------------------------
두 집합의 교집합을 출력하는 문제.
파이썬으로 하면 몹시 간단할 것 같다.
728x90
반응형
'알고리즘' 카테고리의 다른 글
[BOJ] 1931 회의실 배정 (0) | 2023.06.01 |
---|---|
[BOJ] 1780 종이의 개수 (0) | 2023.05.31 |
[BOJ] 1697 숨바꼭질 (0) | 2023.05.31 |
[BOJ] 1676 팩토리얼 0의 개수 (0) | 2023.05.31 |
[BOJ] 1620 나는야 포켓몬 마스터 이다솜 (0) | 2023.05.30 |