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

+ Recent posts