이번 백준 문제는 문자열 집합 이다.
첫번째로 주어진 갯수만큼의 문자열이
두번째로 주어진 문자열에 몇개가 포함되어 있는지에대한 문제이다.
백준 문제 내는 스타일은 아직도 알아듣기가 힘들다..
문제파악하는게 제일 어려운 것 같다.
기본적으로 백준 제출용 폼에 코드를 작성한다.
기본 입출력,알고리즘,스트링,맵,단축매크로가 사용된다.
중요한 부분은 맵을 사용하는 부분이며
키는 문자열
값은 bool 형의 참거짓판단으로 사용되는 것!
#include <iostream>
#include <algorithm>
#include <string>
#include <vector>
#include <map>
#define fastio cin.tie(0)->ios::sync_with_stdio(0); cout.tie(0);
using namespace std;
int N, M, answer; // 제시된 입력변수 N,M과 정답출력용 변수
string S; // 문자열입력받을 변수
map<string, bool> MS; // 문자열+참,거짓으로된bool 형의 Map 객체 MS
int main()
{
fastio; // 입출력단축 매크로
cin >> N >> M; // 제시된 입력변수 만큼 반복
for (int i = 0; i < N; i++) // 처음제시된 N번만큼 반복진행
{
cin >> S; // 문자열을 입력받고
MS[S] = true; // 해단문자열의 map의 값을 true 로 맞춰준다.
// 문제의 N = 5, 즉 처음입력받은 문자열 5개는 값이 true 이다.
}
for (int i = 0; i < M; i++) // 제시된 입력변수 만큼 반복
{
cin >> S; // 문자열을 입력받고
if (MS[S]) // 해당문자열이 true 일경우 (위에서 입력된 문자열과 같다면)
{
answer++; // 정답 카운트 증가시킨다.
}
}
// 처음 입력받은 문자열 5개는 true 이고
// 다음 입력받은 11개의 문자중 위의 5개와 일치하는문자열이 4개 이므로
// 정답은 4가 출력된다.
cout << answer << "\n";
return 0;
}
'백준' 카테고리의 다른 글
[백준/C++] 14888 연산자 끼워넣기 (1) | 2023.05.21 |
---|---|
[백준/C++] 1912 연속합 (0) | 2023.05.18 |
[백준/C++] 24479 알고리즘 수업 - 깊이 우선 탐색 1 (0) | 2023.05.06 |
[백준/C++] 10845 큐 (0) | 2023.05.03 |
[백준/C++] 2485 가로수 (유클리드호제법, 최대공약수) (0) | 2023.05.02 |
댓글