두 파일명 A와 B가 주어질 때 A에만 대응하는 가장 짧은 별표 패턴을 별표 개수와 사전 순으로 정해 출력합니다.
어려움8동적 계획법문자열 매칭BFS아직 제출이 없습니다시간 제한5초메모리 제한512 MB많은 운영체제에서는 파일 이름을 지정할 때 *(별표)를 와일드카드로 쓸 수 있다. *는 빈 문자열을 포함한 임의의 문자열과 일치한다.
와일드카드는 여러 파일을 한꺼번에 지정할 때 자주 쓰지만, 파일 하나를 더 편하게 지정하는 데에도 쓸 수 있다. 예를 들어 pascalisamazing이라는 파일을 지정한다고 하자. pascal*에 일치하는 파일이 이 파일뿐이라면 이 패턴으로 pascalisamazing을 지정할 수 있다. pascal*은 pascalisamazing보다 훨씬 짧으므로 입력하기 편하다.
파일 이름 두 개가 주어질 때, 첫 번째 이름에는 일치하지만 두 번째 이름에는 일치하지 않는 가장 짧은 패턴을 구하라.
패턴은 알파벳 소문자와 *로 이루어진 문자열이다. 패턴 안의 *를 각각 임의의 문자열(빈 문자열도 가능)로 바꾸어 어떤 이름과 완전히 같게 만들 수 있으면, 그 패턴은 그 이름에 일치한다.
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 이어서 테스트 케이스가 두 줄씩 주어진다. 각 테스트 케이스의 첫째 줄에는 첫 번째 파일 이름 A가, 둘째 줄에는 두 번째 파일 이름 B가 주어진다. 파일 이름은 알파벳 소문자로만 이루어진다.
각 테스트 케이스마다 다음 형식으로 한 줄씩 출력한다.
Case #X: Y
X는 테스트 케이스 번호이고, Y는 A에는 일치하지만 B에는 일치하지 않는 가장 짧은 패턴이다. 길이가 가장 짧은 패턴이 여러 개이면 그중 *의 개수가 가장 적은 것을 출력한다. 그래도 여러 개가 남으면 사전순으로 가장 앞서는 것을 출력한다. 문자 비교는 ASCII 코드 값으로 하며, *의 코드 값 42는 어떤 소문자보다도 작다.