https://www.acmicpc.net/problem/9996
접미사(prefix), 접두사(suffix) 개념과 약간의 string 테크닉이 필요한 문제.
접미사 + * + 접두사
* 에는 어떠한 문자열이나 공백이 올 수 있다고 한다.
여러 개의 테스트 케이스 문자열이 들어온다고 했을 때,
접미사와 접두사가 같은 문자열이라면 중간의 문자열들은 * 로 대체가 되면서
맞으면 DA, 틀리면 NE를 출력하면 된다.
다만 주의할 점이, 접두사와 접미사가 같은 문자열인 경우에는 그 크기도 같이 생각해줘야 한다.
aba * aba 라면
들어온 문자열이 aba 일 경우에는 DA 를 뱉게 되는데,
문제에서는 임의의 문자열로 변환해 파일 이름을 같게 만들 수 있어야 한다는 조건이 있으므로
적어도 접두사 + 접미사의 크기가 들어온 문자열의 크기보다는 작아야 한다는 것을 알 수 있다.
#include <iostream>
#include <string>
using namespace std;
int N;
string pattern, str, pre, suf;
int main()
{
cin >> N >> pattern;
int pos = pattern.find('*');
pre = pattern.substr(0, pos);
suf = pattern.substr(pos + 1);
for (int i = 0; i < N; i++)
{
cin >> str;
if (pre.size() + suf.size() > str.size())
{
cout << "NE\n";
}
else
{
if (pre == str.substr(0, pre.size()) &&
suf == str.substr(str.size() - suf.size()))
{
cout << "DA\n";
}
else
{
cout << "NE\n";
}
}
}
return 0;
}
'Algorithm' 카테고리의 다른 글
[백준 1620] 나는야 포켓몬 마스터 이다솜 (0) | 2024.08.16 |
---|---|
[백준 9375] 패션왕 신해빈 (0) | 2024.08.16 |
[백준 11655] ROT 13 (0) | 2024.08.15 |
[백준 11051] 이항 계수 2 (0) | 2022.01.11 |
[백준 1654] 랜선 자르기 (0) | 2021.12.23 |