algospot.com :: WILDCARD
Wildcard 문제 정보 문제 와일드카드는 다양한 운영체제에서 파일 이름의 일부만으로 파일 이름을 지정하는 방법이다. 와일드카드 문자열은 일반적인 파일명과 같지만, * 나 ? 와 같은 특수 문자를
www.algospot.com
알고리즘 문제해결전략 책에 나와있는 알고리즘과 동일하게 구현하였다.
문제에 결과를 ASCII코드 순서로 출력하라는 조건이 있기 때문에 vector 배열에 조건을 만족하는 파일명을 저장한 다음, 오름차순 정렬 후 출력해주었다.
#include <iostream>
#include <cstring>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int memo[101][101];
string wild, file;
bool Solution(int w, int f)
{
int& ret = memo[w][f];
if (ret != -1) return ret;
while (w < wild.size() && f < file.size() && (wild[w] == '?' || wild[w] == file[f]))
{
w++, f++;
}
if (w == wild.size() && f == file.size())
return ret = 1;
if (wild[w] == '*')
if (Solution(w + 1, f) || (f < file.size() && Solution(w, f + 1)))
return ret = 1;
return ret = 0;
}
int main(void)
{
int testcase;
cin >> testcase;
while (testcase--)
{
int num;
cin >> wild >> num;
vector<string> result;
for (int i = 0; i < num; i++)
{
cin >> file;
memset(memo, -1, sizeof(memo));
if(Solution(0, 0))
result.push_back(file);
}
sort(result.begin(), result.end());
for (int i = 0; i < result.size(); i++)
cout << result[i] << endl;
result.clear();
}
return 0;
}
알고리즘 200일 프로젝트 - 50 day
'알고리즘 > algospot' 카테고리의 다른 글
알고리즘 문제해결전략 문제8.5 합친 LIS (ID: JLIS) (0) | 2020.05.27 |
---|---|
알고리즘 문제해결전략 예제:삼각형 위 최대경로 (ID: TRIANGLEPATH) (0) | 2020.05.26 |
알고리즘 문제해결전략 예제: 외발 뛰기 (ID: JUMPGAME) (0) | 2020.05.22 |
알고리즘 문제해결전략 문제7.4 울타리 잘라내기 (ID: FENCE) (0) | 2020.05.09 |
알고리즘 문제해결전략 문제7.2 쿼드 트리 뒤집기 (ID: QUADTREE) (0) | 2020.05.09 |