아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

함께 걷는 길

면접 대비

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

요약
격자 위 두 이동 경로에서 방향이 같은 구간을 순서대로 맞추어 함께 걸을 수 있는 최대 블록 수를 구합니다.
난이도

보통10점 중 5점

유형
동적 계획법, 시뮬레이션
정답자
아직 제출이 없습니다

문제

작은 마을의 길은 모두 격자 모양이다. 존과 마이크는 학교에서 집까지 부모가 정해 준 경로를 그대로 걷는다. 경로는 S, R, L로 이루어진 문자열로 주어진다. 두 사람은 학교에서 같은 방향을 보고 출발하고, 교차로마다 지시를 하나 처리한다. S는 방향을 그대로 두고, R는 오른쪽으로, L은 왼쪽으로 돈 다음, 한 블록을 걸어 다음 교차로로 간다. 예를 들어 경로가 SSRRL이면 두 블록을 직진하고, 오른쪽으로 돌아 한 블록, 다시 오른쪽으로 돌아 한 블록, 마지막으로 왼쪽으로 돌아 한 블록을 걷는다. 경로는 최단이 아니라서 같은 교차로를 여러 번 지날 수도 있다.

두 사람은 되도록 많은 블록을 나란히 걷고 싶다. 교차로에서는 원하는 만큼 기다릴 수 있지만, 자기 경로를 벗어나거나 지시 순서를 바꿀 수는 없다. 같은 교차로에 둘이 함께 서 있고 각자의 다음 한 블록이 같은 구간이면, 그 블록을 나란히 걸어 다음 교차로에 함께 도착한다. 같은 교차로를 서로 다른 시각에 지나가기만 하면 함께 걸은 것이 아니고, 함께 서 있어도 다음에 걷는 구간이 다르면 함께 걸은 것이 아니다.

존의 ii번째 이동이 교차로 uu에서 교차로 vv로 가고 마이크의 jj번째 이동도 uu에서 vv로 가면, 두 이동은 같은 블록이다. 모든 tt에 대해 존의 iti_t번째 이동과 마이크의 jtj_t번째 이동이 같은 블록이 되는 i1<i2<⋯<iki_1 < i_2 < \dots < i_k와 j1<j2<⋯<jkj_1 < j_2 < \dots < j_k가 존재하는 가장 큰 kk를 구한다. 이 값은 두 사람이 함께 도착할 수 있는 교차로의 개수와 같다.

입력

첫 줄에 테스트 케이스의 수 NN이 주어진다 (1≤N≤1001 \le N \le 100). 다음 NN개 줄에는 각각 존의 경로와 마이크의 경로가 공백 하나로 구분되어 주어진다. 두 문자열은 S, R, L로만 이루어지고, 길이는 11 이상 100100 이하다.

출력

각 테스트 케이스마다 한 줄에 Case #n: k를 출력한다. nn은 11부터 시작하는 테스트 케이스 번호이고, kk는 두 사람이 나란히 걸을 수 있는 블록 수의 최댓값이다.

예제3

  1. 예제 1

    입력
    5
    SSRRL RLR
    SSRRL LRRSRL
    SSRRL RLSLL
    SRRRS LRRSSRRSRSS
    SRRRRRRS LRRSSRRSRSSRRS
    
    예상 출력
    Case #1: 1
    Case #2: 0
    Case #3: 0
    Case #4: 2
    Case #5: 3
    
  2. 예제 2

    입력
    1
    S S
    
    예상 출력
    Case #1: 1
    
  3. 예제 3

    입력
    1
    SSRRL SSRRL
    
    예상 출력
    Case #1: 5