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

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

두 부분 수열 고르기

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

요약
두 문자열 s와 t에서 각각 부분수열 x, y를 골라 x가 y보다 사전순으로 크지 않게 하면서 |x|+|y|의 최댓값을 구한다.
난이도

보통10점 중 7점

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

문제

Clara는 두 문자열 ss와 tt를 가지고 있다. Clara는 ss에서 부분 수열 xx를, tt에서 부분 수열 yy를 골라 다음 조건을 만족시키려고 한다.

  • xx는 yy보다 사전순으로 작거나 같다.
  • ∣x∣+∣y∣|x| + |y|가 최대가 된다. 여기서 ∣s∣|s|는 문자열 ss의 길이를 나타낸다.

다음에 유의하자.

  • xx와 yy는 모두 빈 문자열일 수 있다.
  • 부분 수열이란 주어진 수열에서 0개 이상의 원소를 삭제하고 남은 원소의 순서를 유지하여 얻을 수 있는 수열이다.
  • 문자열 xx가 문자열 yy보다 사전순으로 작다는 것은, xx가 yy의 접두사이거나(x≠yx \ne y), xi<yix_i < y_i이고 모든 jj (1≤j<i1 \le j < i)에 대해 xj=yjx_j = y_j인 ii (1≤i≤min⁡(∣x∣,∣y∣)1 \le i \le \min(|x|, |y|))가 존재한다는 뜻이다.

입력

입력은 여러 테스트 케이스로 이루어져 있으며, 파일의 끝에서 종료된다. 각 테스트 케이스는 다음과 같다.

첫째 줄에 문자열 ss가 주어진다. 둘째 줄에 문자열 tt가 주어진다.

출력

각 테스트 케이스마다 ∣x∣+∣y∣|x| + |y|를 출력한다.

제한

  • 1≤∣s∣≤20001 \le |s| \le 2000
  • 1≤∣t∣≤20001 \le |t| \le 2000
  • ∣s∣|s|의 합은 2000020000을 넘지 않는다.
  • ∣t∣|t|의 합은 2000020000을 넘지 않는다.
  • 두 문자열은 영어 소문자로만 이루어져 있다.

예제1

  1. 예제 1

    입력
    aaaa
    bbbb
    abcd
    abca
    abcd
    abcd
    
    예상 출력
    8
    7
    8