돌다리 건너기

면접 대비

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

요약
두 개의 다리 문자열에서 다리를 매번 교대하고 위치가 엄격히 증가하도록 두루마리 문자열과 일치하는 경로의 수를 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 문자열
정답자
아직 제출이 없습니다

문제

절대반지를 얻기 위해 원정대가 두 개의 나란한 돌다리를 건너려고 한다. 두 돌다리 중 하나는 <악마의 돌다리>, 다른 하나는 <천사의 돌다리>이다.

두 돌다리의 길이는 항상 같고, 각 칸에는 R, I, N, G, S 중 하나의 문자가 새겨져 있다. 아래 표는 길이가 6인 돌다리의 한 모습이다.

구분123456
악마의 돌다리RINGSR
천사의 돌다리GRGGNS

원정대가 가진 마법의 두루마리에는 다리를 건널 때 반드시 순서대로 밟아야 하는 문자들이 적혀 있다. 순서를 어기면 돌다리가 무너진다.

다리를 건널 때는 다음 규칙을 모두 만족해야 한다.

  1. 출발 지점에서 도착 지점 방향, 즉 왼쪽에서 오른쪽으로만 이동한다.
  2. 두루마리에 적힌 문자열의 모든 문자를 순서대로 밟아야 한다.
  3. 밟는 돌다리는 매번 <악마의 돌다리>와 <천사의 돌다리>가 번갈아야 한다. 첫 번째 돌은 어느 돌다리에서 시작해도 된다.
  4. 다음으로 밟는 돌은 이전에 밟은 돌보다 반드시 오른쪽에 있어야 한다. 한 칸 이상만 전진하면 되며, 중간의 돌은 몇 칸이든 건너뛸 수 있다.

위 표에서 두루마리의 문자열이 RGS라면 규칙을 만족하며 건널 수 있는 방법은 3가지이다. 주어진 두루마리 문자열과 두 돌다리의 문자열에 대해, 모든 가능한 건너기 방법의 수를 구하라.

입력

첫째 줄에 마법의 두루마리에 적힌 문자열이 주어진다. 이 문자열은 R, I, N, G, S로만 이루어져 있으며, 길이는 1 이상 20 이하이다.

둘째 줄과 셋째 줄에는 각각 <악마의 돌다리>와 <천사의 돌다리>에 새겨진 문자열이 주어진다. 두 문자열의 길이는 같고, 길이는 1 이상 100 이하이다.

출력

두루마리에 적힌 문자열의 순서대로 다리를 건널 수 있는 방법의 수를 출력한다. 가능한 방법이 없으면 0을 출력한다.

모든 테스트 데이터에서 정답은 2^31 - 1 이하이다.

예제3

  1. 예제 1

    입력
    RGS
    RINGSR
    GRGGNS
    
    예상 출력
    3
    
  2. 예제 2

    입력
    RINGS
    SGNIRSGNIR
    GNIRSGNIRS
    
    예상 출력
    0
    
  3. 예제 3

    입력
    GG
    GGGGRRRR
    IIIIGGGG
    
    예상 출력
    16