본문 바로가기
백준/문자열

백준 14425 c++ "문자열 집합" -PlusUltraCode-

by PlusUltraCode 2025. 3. 21.

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();
}