๋ฌธ์
ํ์ด
์์ด๋์ด
- ์ฃผ์ด์ง ํจํด์์
*
๊ฐ ์์นํ ์ธ๋ฑ์ค ๋ฒํธ๋ฅผ ์ฐพ๋๋ค.
- ์
๋ ฅํ ํ์ผ๋ช
์
prefix
์ suffix
๋ฅผ ์ถ์ถํ๋ค.
- ํจํด๊ณผ ๋์กฐํ ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
๋ฌธ์ ์
substr()
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฌด๋ถ๋ณํ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉํ ๊ฒ
find()
๋ฅผ ์ฌ์ฉํ์ง ์๊ณ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํด *
์ ์์น๋ฅผ ์ฐพ์ ๊ฒ
- ํ์ผ๋ช
์ ๊ธธ์ด๊ฐ ํจํด์
prefix
์ suffix
์ ๊ธธ์ด ํฉ๋ณด๋ค ์์ ๊ฒฝ์ฐ๋ฅผ ํ์
ํ์ง ๋ชปํ ๊ฒ
#include <bits/stdc++.h>
using namespace std;
int cnt, idx;
string pattern;
string startPattern, endPattern;
void find() {
for (int i = 0; i < 100; i++) {
if (pattern[i] == '*') {
idx = i;
return;
}
}
}
int main() {
cin >> cnt;
cin >> pattern;
find();
for (int i = 0; i < idx; i++) startPattern += pattern[i];
for (int i = idx + 1; i < pattern.length(); i++) endPattern += pattern[i];
for (int i = 0; i < cnt; i++) {
string input;
cin >> input;
string start;
for (int j = 0; j < idx; j++) start += input[j];
string end;
for (int k = input.length() - idx; k < input.length(); k++) end += input[k];
if ((start == startPattern) && (end == endPattern)) {
cout << "DA" << "\n";
} else {
cout << "NE" << "\n";
}
}
}
์์ด๋์ด
ab*ba
ํจํด์ผ ๋ ํ์ผ๋ช
์ด aba
์ธ ๊ฒฝ์ฐ
- ์ฆ, ํจํด์
prefix
/ suffix
์ ๊ธธ์ด ํฉ์ด ํ์ผ๋ช
๋ณด๋ค ๊ธด ๊ฒฝ์ฐ NE
์ถ๋ ฅ
- ๋ถํ์ํ ๋ฐ๋ณต๋ฌธ์ ์ ๊ฑฐํ๊ณ
find()
, substr()
ํจ์ ์ฌ์ฉ
#include <bits/stdc++.h>
using namespace std;
int cnt;
string pattern, input;
int main() {
cin >> cnt;
cin >> pattern;
int pos = pattern.find('*');
string prefix = pattern.substr(0, pos);
string suffix = pattern.substr(pos + 1);
for (int i = 0; i < cnt; i++) {
cin >> input;
if (prefix.size() + suffix.size() > input.size()) cout << "NE\n";
else {
if (input.substr(0, pos) == prefix && input.substr(input.size() - suffix.length()) == suffix)cout << "DA\n";
else cout << "NE\n";
}
}
}