https://www.acmicpc.net/problem/1764
문제
풀이
N 만큼 입력받은 문자열들과 M만큼 입력받은 문자열들 중, 겹치는 문자열을 정렬한채로 출력하는 문제이다.
알파벳 순으로 정렬되는 기능인 sort를 사용하였고, 입력되는 문자열들은 vector에 저장하였다.
그리고 겹치는 문자열이 있는지 유무 확인은 이진탐색(binary_search)으로 하였다.
이후 겹치는 문자열들을 출력할 vector에 저장하고, 출력하였다.
특정한 알고리즘을 사용하지않는 그냥 간단한 문제이다.
Code ( C++ )
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
vector<string> vec;
vector<string> result;
int N,M;
string str;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
N = M = 0;
cin >> N >> M;
// 벡터에 저장
for(int i = 0; i < N; i++)
{
cin >> str;
vec.push_back(str);
}
// 정렬
sort(vec.begin(), vec.end());
for(int i = 0; i < M; i++)
{
cin >> str;
// 문자열 이진탐색 후 동일한거만 벡터에 추가
if(binary_search(vec.begin(), vec.end(), str) == true)
{
result.push_back(str);
}
}
sort(result.begin(), result.end());
int size = result.size();
cout << size << endl;
for (int i = 0; i < size; i++)
{
cout << result[i] << endl;
}
}
'💻 OnlineJudge > Baekjoon' 카테고리의 다른 글
[백준 / BOJ] C++ 1992 쿼드트리 (0) | 2023.03.04 |
---|---|
[백준 / BOJ] C++ 1780 종이의 개수 (0) | 2023.03.04 |
[백준 / BOJ] C++ 1676 팩토리얼 0의 개수 (0) | 2023.02.01 |
[백준 / BOJ] C++ 1463 1로 만들기 (0) | 2023.01.10 |
[백준 / BOJ] C++ 2798 블랙잭 (0) | 2022.12.15 |