RiseOJ는 solved.ac와 제휴 관계가 없습니다. 티어 아이콘 © solved.ac. solved.ac
포럼
R00187

DNA 공통 부분 수열의 수

Gold IV 골드 IV
난이도
3s
시간 제한
256MB
메모리 제한
6
맞았습니다!!
6
제출 수
100.0%
정답률
레이팅

의견: 0

설명

두 개의 DNA 가닥 \(A\), \(B\) 가 주어진다. 연구원은 두 가닥에서 동시에 나타나는 서로 다른 공통 부분 수열의 개수를 세고 싶다.

문자열 \(T\)\(A\) 의 부분 수열이면서 동시에 \(B\) 의 부분 수열일 때, \(T\)\(A\)\(B\) 의 공통 부분 수열이라고 한다. 빈 문자열도 공통 부분 수열에 포함한다. 내용이 같은 부분 수열은 (등장 위치가 달라도) 하나로 센다.

즉 서로 다른 문자열의 개수를 세는 것이다. 그 개수가 매우 커질 수 있으므로 \(1{,}000{,}000{,}007\) 로 나눈 나머지를 출력하여라.

예를 들어 \(A=\) ab, \(B=\) ab 라면 공통 부분 수열은 (빈 문자열), a, b, ab 의 4개이다.

제약

\(1 \le |A|, |B| \le 2{,}000\), 두 문자열은 소문자 알파벳으로만 이루어진다.

입력 형식

첫째 줄에 문자열 \(A\), 둘째 줄에 문자열 \(B\) 가 주어진다. 두 문자열 모두 소문자 알파벳으로만 이루어진다. (\(1 \le |A|, |B| \le 2{,}000\))

출력 형식

서로 다른 공통 부분 수열의 개수를 \(1{,}000{,}000{,}007\) 로 나눈 나머지를 출력한다. (빈 문자열 포함)

예제 1
입력
ab
ab
출력
4
설명

공통 부분 수열은 빈 문자열, a, b, ab 로 총 4개이다.

예제 2
입력
abc
xyz
출력
1
설명

겹치는 글자가 전혀 없어 공통 부분 수열은 빈 문자열뿐이라 1개이다.

문제 정보

riseoj 작성

출처 Original

평가 및 의견

DNA 공통 부분 수열의 수

개요
출제자 난이도 Gold IV 골드 IV 의견 0 / 50 공개 집계 (커뮤니티 난이도, 주요 주제, 품질)는 의견이 충분히 모이면 공개됩니다.

Log in to rate problems.

개별 의견

아직 의견이 없습니다. 자격이 된다면 위 양식에서 가장 먼저 평가해 보세요.

풀이 제출

DNA 공통 부분 수열의 수

게스트로 둘러보고 있습니다. 로그인하면 풀이를 제출하고 진행 상황을 확인할 수 있습니다. 로그인하고 제출하기
공개
C++20 Tab 들여쓰기 · Ctrl+/ 주석 토글 · Enter 자동 들여쓰기
1 1 1 0 공백: 4 · UTF-8