[BOJ 알고리즘, C++] #1764_듣보잡, Set
BOJ 알고리즘 문제 풀이, 1764_듣보잡, Set 문제
Set 컨테이너를 활용해 두 집합의 중복 원소를 선별합니다.
문제
풀이
- 이 문제도 역시 Set 컨테이너를 활용하면 간단하게 풀 수 있는 문제입니다.
- 먼저, 입력으로 받은 문자열이 이전에도 입력으로 들어왔는지, 즉 중복된 문자열이 들어왔는지 체크하기 위해 Set 컨테이너에 선제적으로 문자열들을 삽입합니다.
- 중복되는 문자열일 경우 별도의 Vector 컨테이너를 생성해 항목들을 삽입합니다.
- "사전순으로 나열하라" 조건을 충족하기 위해 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';
}
'문제 풀이 > BOJ 문제 풀이' 카테고리의 다른 글
[BOJ알고리즘, C++]#1676_팩토리얼의 0의 개수, 소인수분해 (0) | 2022.12.13 |
---|---|
[BOJ알고리즘, C++]#11051_이항 계수 2, 파스칼의 삼각형 (0) | 2022.12.04 |
[BOJ알고리즘, C++]#1269_대칭 차집합, Set (0) | 2022.12.04 |
[BOJ알고리즘, C++]#11478_서로 다른 부분 문자열, Set (0) | 2022.12.04 |
[BOJ알고리즘, C++]#14425_문자열 집합 (0) | 2022.12.04 |