단어의 힘

면접 대비

시간 제한1초메모리 제한128 MB

요약
N개의 소 이름 각각에 대해 M개의 좋은 문자열 중 대소문자를 구분하지 않고 부분 수열로 등장하는 문자열의 개수를 센다.
난이도

보통10점 중 4점

유형
문자열, 투 포인터, 구현, 완전 탐색
정답자
아직 제출이 없습니다

문제

농부 John은 자신이 기르는 NN마리 (1≤N≤10001 \le N \le 1000) 소의 이름이 얼마나 좋은지 평가하려고 합니다. 각 이름은 최대 1000자로 이루어진 문자열이며, 모든 문자는 공백이 아닙니다.

그는 또한 MM개 (1≤M≤1001 \le M \le 100)의 "좋은" 문자열을 준비했습니다. 각 좋은 문자열은 최대 30자이고 모두 공백이 아닙니다. 어떤 좋은 문자열의 문자들이 순서대로 소 이름의 부분 수열(subsequence)로 등장하면 — 즉 그 문자들이 이름 안에서 순서만 지키면 되고 반드시 인접할 필요는 없습니다 — 그 이름은 좋은 문자열 하나당 점수 1점을 얻습니다.

모든 비교는 대소문자를 구분하지 않습니다. 즉 대문자와 소문자는 같은 것으로 취급합니다. 예를 들어 이름 "Bessie"는 "Be", "sI", "EE", "Es"를 순서대로 포함하지만 "is"나 "eB"는 포함하지 않습니다.

각 소 이름이 얻는 점수를 구해 농부 John을 도와주세요.

입력

  • 1번째 줄: 공백으로 구분된 두 정수 NN과 MM.
  • 2번째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에는 ii번째 소의 이름이 주어집니다.
  • N+2N+2번째 줄부터 N+M+1N+M+1번째 줄까지: N+i+1N+i+1번째 줄에는 ii번째 좋은 문자열이 주어집니다.

출력

  • 1번째 줄부터 NN번째 줄까지: ii번째 줄에는 ii번째 소 이름이 얻는 점수를 출력합니다.

힌트

예시에는 "Bessie", "Jonathan", "Montgomery", "Alicia", "Angola"라는 다섯 마리 소와 "se", "nGo", "Ont"라는 세 개의 좋은 문자열이 있습니다.

"Bessie"는 "se"를 포함하고, "Jonathan"은 "Ont"를 포함하며, "Montgomery"는 "nGo"와 "Ont"를 모두 포함합니다. "Alicia"는 어떤 좋은 문자열도 포함하지 않고, "Angola"는 "nGo"를 포함합니다.

예제3

  1. 예제 1

    입력
    5 3
    Bessie
    Jonathan
    Montgomery
    Alicia
    Angola
    se
    nGo
    Ont
    
    예상 출력
    1
    1
    2
    0
    1
    
  2. 예제 2

    입력
    1 1
    abc
    abc
    
    예상 출력
    1
    
  3. 예제 3

    입력
    1 3
    AbCdEf
    ace
    BDF
    XYZ
    
    예상 출력
    2