#include <bits/stdc++.h>
using namespace std;
int n;
int chk;
string p;
string sum;
string s,e,s1,e1;
int main () {
cin >> n >> p;
int chks[n];
int size = p.length();
for (int i = 0; i < size; i++){
if (p[i]=='*'){
chk = i;
break;
}
else {
continue;
}
}
s=p.substr(0,chk);
e=p.substr(chk+1);
for (size_t i = 0; i < n; i++){
cin >> sum;
s1=sum.substr(0,chk);
if (sum.length()<e.length()){
chks[i]=0;
}
else if (s.length()==sum.length()){
chks[i] = 0;
}
else {
e1=sum.substr(sum.length()-e.length());
}
if (s1==s and e == e1){
chks[i] = 1;
}
else {
chks[i] = 0;
}
}
for (size_t i = 0; i < sizeof(chks) / sizeof(int); i++){
if (chks[i] == 1){
cout << "DA" << "\n";
}
else {
cout << "NE" << "\n";
}
}
}
뭐가 문제일까요?
별표 앞 뒤로 문자열 분리하고 문자열 시작 끝만 확인하면 되는 거 아니노?
그렇게 하면 패턴 abc*c 입력 abc 이런 사례들 땜에 틀려서...
그건 앞의 패턴(abc) 검사 후 일치하면 substr로 제거하면 될 거 같은데("abc" -> "")
abc*c면 abc면 최소 길이 4개 이상인지 체크하면 되지
ㄴ 맞네 최소 길이만 체크해도 되겠노
그냥 구글에 검색해서 복붙해