부분 문자열 안의 부분 수열

시간 제한2초메모리 제한512 MB

요약
문자열 s의 부분 문자열 중 t를 부분 수열로 적어도 한 번 포함하는 것의 개수를 센다.
난이도

보통10점 중 7점

유형
투 포인터, 동적 계획법, 문자열, 그리디
정답자
아직 제출이 없습니다

문제

두 문자열 ss와 tt가 주어진다. ss의 부분 문자열 중에서 tt를 부분 수열로 한 번 이상 포함하는 것의 개수를 세어라.

부분 문자열과 부분 수열은 모두 원래 문자열의 문자를 순서대로 나열한 것이다. 부분 문자열에서는 문자가 원래 문자열에서 연속해야 하지만, 부분 수열에서는 연속하지 않아도 된다. 문자열 abcde에서 ace는 부분 수열이지만 부분 문자열은 아니다.

ss가 aa이고 tt가 a라면 답은 3이다. [a]a, [aa], a[a].

입력

각 테스트 케이스는 정확히 두 줄로 이루어진다.

첫째 줄에는 문자열 ss가 주어진다 (1≤∣s∣≤1051 \le |s| \le 10^5, s∈[a−z]∗s \in [a-z]^*). 다른 문자는 없다. 둘째 줄에는 문자열 tt가 주어진다 (1≤∣t∣≤1001 \le |t| \le 100, ∣t∣≤∣s∣|t| \le |s|, t∈[a−z]∗t \in [a-z]^*). 다른 문자는 없다.

출력

정수 하나를 출력한다. ss의 부분 문자열 중에서 tt를 부분 수열로 한 번 이상 포함하는 것의 개수이다.

예제3

  1. 예제 1

    입력
    abcdefghijklmnopqrstuvwxyz
    a
    
    예상 출력
    26
    
  2. 예제 2

    입력
    abcdefghijklmnopqrstuvwxyz
    m
    
    예상 출력
    182
    
  3. 예제 3

    입력
    penpineappleapplepen
    ppap
    
    예상 출력
    68