https://www.acmicpc.net/problem/14425
[필자 사고]
필자는 map 을 이용하여 이 문제를 해결했따.
해당 문자열이 map 배열에 있다면 count 수를 증가시키는 형태로 문제를 풀었다.
[코드 해설]
2. Input 함수
- N과 M을 입력받습니다.
- 이후 N개의 문자열을 입력받아 map에 저장합니다.
- myMap.insert({ str, 1 })를 통해 중복 없이 저장됩니다.
- 이 map은 일종의 사전(dictionary) 역할을 합니다.
3. Game_Start 함수
- M개의 문자열을 하나씩 입력받습니다.
- 각 문자열이 myMap에 존재하는지 find()를 통해 확인합니다.
- 존재하면 resultCount를 1 증가시킵니다.
- resultCount를 출력합니다.
- 즉, 첫 번째 그룹에 존재하는 문자열이 두 번째 그룹에 몇 개 있었는지를 출력합니다.
[소스 코드]
#include <iostream>
#include <cstring>
#include <vector>
#include <map>
using namespace std;
map<string, int> myMap;
string str;
void Input() {
cin >> str;
}
void Game_Start() {
for (int i = 0; i < str.size(); i++) {
string strTank = "";
for (int k = i; k < str.size(); k++) {
strTank += str[k];
myMap.insert({ strTank,1 });
}
}
cout << myMap.size();
}
int main(void) {
Input();
Game_Start();
}
'백준 > 문자열' 카테고리의 다른 글
백준 1431 c++ "시리얼 번호" -PlusUltraCode- (0) | 2025.03.28 |
---|---|
백준 20920 c++ "영단어 암기는 괴로워" -PlusUltraCode- (0) | 2025.03.28 |
백준 1213 c++ "팰린드롬 만들기" -PlusUltraCode- (0) | 2025.03.24 |
백준 11478 c++ "서로 다른 부분 문자열의 개수" -PlusUltraCode- (0) | 2025.03.21 |
백준 1316 c++ "그룹 단어 체커" -PlusUltraCode- (0) | 2025.03.20 |