Wildcard and Query
시간 제한2초메모리 제한1024 MB
고정된 문자열 S에 대해, 와일드카드 패턴 T가 S와 매칭되는지, 매칭된다면 그 방법이 유일한지 답하는 문제입니다.
문제
알파벳 소문자로 이루어진 문자열 가 주어진다.
알파벳 소문자 및 "*"로 이루어진 문자열 는 다음 조건을 만족할 때 와 매칭된다.
- 의 각 "*"들을 각각 길이가 이상인 임의의 문자열로 대체했을 때 를 만들 수 있다.
예를 들어 "a*b"는 "ab", "acb", "aabb" 등과 매칭되지만 "abc"와는 매칭되지 않는다.
만약 다음 조건을 만족한다면 매칭이 유일하다.
- 의 각 "*"를 문자열로 대체하여 를 만드는 방법이 유일하다.
예를 들어 "a*b*c"는 "abc", "axbxc"와의 매칭은 유일하지만, "abbc"와의 매칭은 유일하지 않다. 첫 번째 "*"를 "b", 두 번째 "*"를 빈 문자열로 바꾸어도 되고, 첫 번째 "*"를 빈 문자열, 두 번째 "*"를 "b"로 바꾸어도 되기 때문이다.
가 주어질 때 다음 쿼리에 답하는 프로그램을 작성하여라.
- 문자열 가 주어지면 가 와 매칭되는지, 매칭된다면 유일한지 여부를 출력한다.
입력
첫째 줄에 알파벳 소문자로 이루어진 문자열 가 주어진다. ()
둘째 줄에 쿼리의 수 가 주어진다. ()
이후 개의 줄에 걸쳐, 그중 번째 줄에는 문자열 가 주어진다. 는 알파벳 소문자 및 "*"로 이루어져 있다.
모든 쿼리에 대해 들의 길이의 합은 이하이다.
출력
각 쿼리에 대한 답을 개의 줄에 걸쳐 순서대로 출력한다.
그중 번째 줄에는 각 에 대해서 와 매칭되지 않는 경우 0, 매칭되고 유일한 경우 1, 그 외의 경우 2를 출력한다.