알파벳 소문자와 별표 한 개로 이루어진 패턴이 주어졌을 때, 입력받은 각각의 파일 이름과 패턴의 일치 여부를 확인하는 문제.
패턴 pat
의 구성 정보를 확인하고, pos
에 별표 위치를 저장한 뒤, substr
을 이용해 별표 이전의 문자열과 이후의 문자열을 pre
와 suf
에 각각 나누어 저장했다.
입력받은 문자열의 일부와 패턴의 일치 여부에 따라, 일치한다면 "DA", 일치하지 않다면 "NE"를 출력했다.
pre.size()
와 suf.size()
의 합이 s.size()
보다 큰 경우에는 문자열과 패턴이 일치할 수 없다는 점에 주의하자.
#include <bits/stdc++.h>
using namespace std;
int N;
string pat, pre, suf, s;
int main() {
ios_base::sync_with_stdio(0);
cin.tie(0); cout.tie(0);
cin >> N;
cin >> pat;
int pos = pat.find("*"); // 패턴 속 별표의 위치 확인
pre = pat.substr(0, pos); // 별표 이전 문자열
suf = pat.substr(pos + 1); // 별표 이후 문자열
for (int i = 0; i < N; i++) {
cin >> s;
if (pre.size() + suf.size() > s.size()) cout << "NE" << '\n';
else {
if (pre == s.substr(0, pre.size()) && suf == s.substr(s.size() - suf.size())) {
cout << "DA" << '\n';
}
else cout << "NE" << '\n';
}
}
return 0;
}